AFX_THREADPROC pfnThreadProc, // Глобальная функция потока 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

AFX_THREADPROC pfnThreadProc, // Глобальная функция потока

Поиск

AFX_THREADPROC pfnThreadProc, // Глобальная функция потока

LPVOID pParam     // Параметр для передачи

);                     // на вход pfnThreadProc

 

AfxBeginThread возвращает указатель на только что созданный объект «поток», у которого есть методы приостановки, возобновления потока и т.д.

 

Для коммуникации потоков одного процесса можно использовать доступные обоим потокам переменные.

Обращение к полям классов Solver или Results до окончания счета может дать неверный результат, поэтому мы будем считывать их в основном потоке только после того как получили от рабочего специальное (созданное нами) сообщение WM_THREADFINISHED в случае успешного окончания работы, или WM_THREADERROR в случае возникновения ошибки (при этом выводить результаты уже не потребуется).

 

Наше приложение должно вывести результат в новое дочернее окно, когда он получен в рабочем потоке. Но в какой момент это сделать? Постоянное пребывание основного потока в цикле проверки какого-либо флага окончания счета отнимало бы время у процессора. Лучше, если основной поток будет ожидать сообщения от рабочего, т.к. это временно переведет первый в состояние блокировки.

 

Послать сообщение известными нам методами CWnd::SendMessage или CWnd::PostMessage не получится, т.к. в разных потоках не рекомендуется совместно использовать общие объекты MFC-классов (кроме прямых потомков CObject и некоторых простейших классов, как CString). Поэтому будем пользоваться глобальной функцией

 

BOOL PostMessage(

HWND hWnd, // идентификатор окна-получателя



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 50; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.02 с.)