Метод ожидания потоковой передачи Windows

Я создаю класс потока для инкапсуляции методов потоков Windows. Я пытаюсь создать метод, который заставляет приложение ждать завершения потока до его выхода из приложения. Если я использую цикл while и boolean, он работает, но очевидно, что он всплескивает мой процессор, а его просто не идеальный.

Какие способы вы могли бы использовать для завершения потока? (я на самом деле не ищу код здесь, просто области для изучения)

Ответ 1

После использования CreateThread для получения дескриптора потока передайте его в API Win32 WaitForSingleObject:

WaitForSingleObject(threadhandle, INFINITE);

Если вы не используете CreateThread (потому что используете другой пакет потоковой передачи), или, возможно, ваш поток всегда жив...

Затем вы можете использовать WaitForSingleObject. Просто создайте событие сначала с помощью API Win32 CreateEvent и дождитесь, когда событие будет установлено с помощью WaitForSingleObject. В конце вашего потока установите событие SetEvent, и вы можете reset событие с ResetEvent.

Большинство пакетов потоковой передачи, хотя и будут иметь собственный способ дождаться потока. Как и в boost:: thread вы можете использовать .join() или boost:: состояние.