CWinThread

Объект CWinThread представляет поток выполнения в приложении. Основной поток исполнения обычно предоставляется объект, производный от CWinApp; CWinApp является производным от CWinThread. Дополнительные объектов CWinThread позволяют несколько потоков в пределах данного приложения.

Существует два основных типа потоков, которые поддерживает CWinThread : рабочие потоки и потоки пользовательского интерфейса. Рабочие потоки имеют не конвейер сообщений: к примеру, поток, выполняющий вычисления фона в приложении электронной таблицы. Потоки пользовательского интерфейса имеют переноса сообщений и обработки сообщений, полученных от системы. CWinApp и производные от него классы являются примерами потоков пользовательского интерфейса. Другие потоки пользовательского интерфейса также могут быть получены непосредственно из CWinThread.

Объекты класса CWinThread обычно существует на время потока. Если вы хотите изменить это поведение, значение m_bAutoDelete Ложь.

Класса CWinThread необходимо сделать ваш код и MFC полностью поточно ориентированными. Локального потока данных, используемое структурой для сохранения информации о потоках управляется объектов CWinThread . Из этой зависимости CWinThread для локального потока данных должны создаваться любой поток, который использует MFC с MFC. Например, поток, созданный во время выполнения функция _beginthreadex не может использовать любой API-интерфейсов MFC.

Для создания потока, вызовите AfxBeginThread. Существует две формы, в зависимости от того, хотите ли вы работник или пользовательского интерфейса потока. Если вы хотите потока пользовательского интерфейса, передайте AfxBeginThread указатель CRuntimeClass CWinThread-производного класса. Если вы хотите создать рабочий поток, передается AfxBeginThread указатель функции управления и параметр для функции управления. Рабочие потоки и потоки пользовательского интерфейса можно указать дополнительные параметры, позволяющие изменять приоритет, размер стека, создание флаги и атрибуты безопасности. AfxBeginThread возвращает указатель на новый объект CWinThread.

Вместо того, чтобы предоставить AfxBeginThread, вы можете собрать CWinThread-производный объект и затем вызвать CreateThread. Этот метод два этапа строительства является полезным, если вы хотите повторно использовать объект CWinThread между последовательными создания и прекращения казней поток.

Для получения дополнительных сведений о CWinThread, обратитесь к статьям Многопоточность с C++ и MFC, Многопоточность: создание потоков пользовательского интерфейса, Многопоточность: создание рабочих потоков, и Многопоточность: как использовать классы синхронизации в Руководстве по Visual C++ программист.

Члены класса |nbsp; Базовый класс | Иерархическая схема

Пример  Образца MFC MTGDI

См. также CWinApp, CCmdTarget

Index