Как я узнаю, что поток завершил свою задачу? - PullRequest
0 голосов
/ 15 февраля 2012

Скажем для примера: -

Я создал поток pThread, используя CreateThread API, который выполнит какую-то задачу, скажем vSampleTask

Как я узнаю, что pThread выполнил свою задачу?

Спасибо

Ответы [ 2 ]

4 голосов
/ 15 февраля 2012

Вы можете ждать на дескрипторе нити с помощью WaitForSingleObject или одной из других функций ожидания. Вы можете использовать MsgWaitForMultipleObjects, чтобы, например, разрешить прерывание вашего ожидания входными сообщениями. Дескриптор потока становится сигнальным, когда выполнение потока завершено.

В качестве альтернативы вы можете проверить состояние потока, позвонив по номеру GetExitCodeThread. Это вернет FALSE, если поток все еще занят, и TRUE, если он завершен. Если поток завершен, будет также возвращен код выхода.

Если одному потоку нужно дождаться завершения другого, вам следует использовать функции ожидания, а не занятый цикл опроса, вызывающий GetExitCodeThread. Занятые циклы и опросы просто потребляют ненужное количество процессора (и мощности). Функции ожидания позволяют ожидающему потоку бездействовать.

3 голосов
/ 15 февраля 2012

Вы можете получить GetExitCodeThread для запроса статуса потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...