Similar presentations:
Системное ПО
1. Системное ПО
Потоки2. Системное ПО
Приложение запущеноПоток 2
Главный поток
• Создание других
потоков
Многопоточная
работа в Windows
Поток 3
Вычисления
Вычисления
Вычисления
Принудительное
завершение
Поток завершился
Принудительное
завершение
При запуске приложения создается главный поток
Любой поток может создавать другие потоки
Потоки могут работать одновременно
При завершении главного потока все остальные потоки принудительно
завершаются
3. Системное ПО
Функция создает новый потокМногопоточная
работа в Windows
lpStartAddress – функция, реализующая новый поток
lpParameter – адрес, который передается потоку
lpCreationFlags – флаги:
CREATE_SUSPENDED – поток создается
остановленным
4. Системное ПО
Функция, реализующая потокМногопоточная
работа в Windows
lpParameter – адрес, который был передан функции
CreateThread
С его помощью можно передать потоку данные для
обработки. Например можно создать для потока массив,
структуру, экземпляр класса, и передать потоку
соответствующий адрес.
5. Системное ПО
ПримерСоздаем новый поток,
реализуемый функцией
MyThread
С помощью GetTickCount
засекаем время работы
потока
WaitForSingleObject
ждет, пока поток
завершится
6. Системное ПО
ПримерЗапуск двух
потоков
Одна и та же
функция может
реализовывать
несколько
потоков
Вычисления такой
же сложности на
двух ядрах
выполняются
быстрее
7. Системное ПО
Управление потокамиВыполняем
одновременно
два потока
Никакой
упорядоченности
при выполнении
не гарантируется
8. Системное ПО
Управление потокамиУменьшает
значение
счетчика
Увеличивает
значение
счетчика
Поток имеет счетчик (suspend count), определяющий
состояние потока. Если значение счетчика >0, поток
остановлен
9. Системное ПО
Управлениепотоками
Поток создается
приостановленным
«Размораживаем»
поток с помощью
ResumeThread