Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемВиталий Челищев
1 Многопоточное программирование Киреев С. Отдел МО ВВС ИВМиМГ
2 Процессы и потоки Процесс Адресное пространство Глобальные данные Куча Потоки Код Много статей на английском: l /2/1 Internet Parallel Computing Archive Много электронных учебников: ucation/how_much100/ Сборка инфы по архитектуре: Useful documents ftp:// Стек Код Много документации по программированию и т.п Есть кой-чего про ассемблер,архитектуру l Энциклопедия по всему подряд, включая общую информацию о микропроцессорах ence/en/wikipedia/x/x8/x86.html Книги по математике Неготовый сайт по ASM P4 Форум по процессорам AMD-INTEL Код Parallel Programming Systems: COPS, Enterprise,... Fortran reference rm/dflrm.htm#book-toc Compaq C Compiler Programmer's Guide ftp://ftp.compaq.com/pub/products/C- CXX/linux/compaq_c/docs/ccc/Programm ers_Guide/TITLE.HTM Вообще по Альфе много чего: ftp://ftp.compaq.com/pub/products Научная литература в Интернет CPU Память CPU Память
3 Процессы и потоки Преимущества потоков: Быстрое переключение между потоками Простая организация взаимодействия – общая память Недостатки потоков: Некорректное использование данных одним потоком отражается на всех других Необходимость в синхронизации при доступе к общим данным Используемые библиотеки должны поддерживать многопоточность
4 Разработка многопоточной программы Потоки: Решают задачу над общими данными Взаимодействуют через общую память Упорядочивают взаимодействие путем синхронизации Ключ к созданию корректной параллельной программы – правильная синхронизация процессов и потоков.
5 Средства создания многопоточных программ Библиотеки потоков –Posix Threads –Windows Threads –… OpenMP Распараллеливающие компиляторы
6 Разработка многопоточной программы (WinAPI, Pthreads) Все потоки описываются в виде отдельных функций Первичный поток выполняет функцию main Новые потоки могут запускаться выполняющимися потоками
7 Управление потоками Создание потока Завершение потока Приостановка потока Возобновление потока Переключение между потоками Не завершайте поток вручную, пусть завершится функция потока.
8 Способы передачи данных между потоками Передача числа через параметр функции потока Передача указателя на объект через параметр функции потока Работа с глобальными переменными
9 Синхронизация потоков Необходима при: Совместном использовании ресурса (атомарные операции) Уведомлении потоков о некотором событии
10 Средства синхронизации потоков Windows ThreadsPosix Threads Interlocked-функции Критические секции Мьютексы СобытияУсловные переменные Семафоры
11 Средства синхронизации потоков в Windows В пользовательском режиме: Interlocked-функции Критические секции С использованием объектов ядра: Процессы, потоки События Семафоры Мьютексы Таймеры
12 Interlocked-функции Функции атомарного доступа к переменным: Присваивание целого числа Присваивание указателя Условное присваивание целого числа Условное присваивание указателя Прибавление целого числа Инкремент целого числа Декремент целого числа
13 Критические секции Используются для взаимоисключающего доступа к ресурсу Обеспечивают атомарное исполнение участка кода Операции: –Вход в критическую секцию (ожидание) –Выход из критической секции В начале ожидания используют спин- блокировку При длительном ожидании используют мьютекс
14 Объекты ядра Объект может быть «занят» или «свободен» Операции: –Создание объекта ядра –Получение доступа к существующему объекту ядра –Удаление объекта ядра –…
15 Синхронизация с помощью объектов ядра Синхронизация осуществляется с помощью wait-функций, ожидающих освобождения одного или нескольких объектов: –WaitForSingleObject –WaitForMultipleObjects –…
16 События Используются для уведомления потоков о некотором событии Операции –Перевести в свободное состояние –Перевести в занятое состояние –Ждать освобождения (wait-функция) Типы событий –С автосбросом: просыпается 1 ожидающий поток –Со сбросом вручную: просыпаются все ожидающие потоки
17 Семафоры Используются для учета некоторого числа ресурсов Содержат счетчик доступных ресурсов (i=0…max) Операции –Занять ресурс: i=i-1 (wait-функция) –Освободить ресурс: i=i+1
18 Мьютексы Используются для взаимоисключающего доступа к ресурсу Операции: –Занять мьютекс (wait-функция) –Освободить мьютекс
19 Таймеры Используются для уведомления о наступлении определенного времени Операции –Установить таймер –Ждать срабатывания таймера –Сбросить таймер
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.