Скачиваний:
13
Добавлен:
26.03.2015
Размер:
102.91 Кб
Скачать

Глава 21. Потоковая многозадачность

  • Использование потоков

    • Потоки MFC

    • Создание рабочего потока

    • Использование нескольких потоков

    • Остановка и возобновление выполнения потоков

    • Управление приоритетами потоков

  • Синхронизация потоков

    • Объекты синхронизации и классы MFC

    • Работа с семафорами

    • Работа с объектами событий

    • Использование критических секций

Потоковая многозадачность - это одно из важных улучшений Windows , которое служит причиной существенного повышения производительности системы. В современных версиях Windows поддерживается два типа многозадачности.

Первый тип основан на процессах. Такая многозадачность поддерживалась уже с первых версий Windows. Процесс- это программа, или задача, которая выполняется. В многозадачных системах такого типа две и более программы могут выполняться одновременно.

Второй тип многозадачности основан на потоках. Такая многозадачность поддерживается оболочкой Win32 и используется в Windows 95 и Windows NT. Поток - это часть выполняющегося процесса. В Windows 95/NT каждый процесс имеет по крайней мере один поток, но потоков процесса может быть и два, и больше.

В потоковой многозадачности несколько частей одной и той же программы могут выполняться одновременно. Это дает возможность писать чрезвычайно эффективные программы путем разделения их на отдельные исполняемые блоки и управления ходом выполнения всей программы в целом. Для многозадачности такого типа в MFC предусмотрены специальные средства поддержки.

С введением потоковой многозадачности возникла необходимость в специальном механизме, называемом синхронизацией. Синхронизация позволяет контролировать выполнение потоков (и процессов) строго определенным образом. В Win32 для синхронизации выделена целая подсистема. Библиотека классов MFC полностью поддерживает средства многозадачности.

Использование потоков

Потоковая многозадачность дает возможность программисту контролировать выполнение отдельных частей программы. Важно понимать, что все процессы имеют по крайней мере один поток выполнения. Он называется главным, первичным потоком.Но в пределах одного и того же процесса можно создавать несколько потоков. В общем случае, когда новый поток создается, он сразу же начинается выполняться. Таким образом, каждый процесс начинается с одного потока, к которому впоследствии могут добавляться дополнительные потоки. Когда они создаются, родительский процесс начинает выполняться не последовательно, а параллельно.

Потоки mfc

В MFC определены два типа потоков : интерфейсныеирабочие. Интерфейсный поток способен принимать и обрабатывать сообщения. Говоря языком MFC , интерфейсные потоки содержатканал сообщений.Главный поток MFC- программы (начинающийся при объявлении объекта класса CWinApp) является интерфейсным потоком. Рабочие потоки не принимают и не обрабатывают сообщения. Они обеспечивают дополнительные пути выполнения задачи внутри интерфейсного потока.

В MFC потоковая многозадачность реализуется с помощью класса CWinThread. Кстати, что производным от него является классCWinApp, формирующий поток приложения.

Соседние файлы в папке Параллельные Процессы и Параллельное Программирование