Ответ 1
После использования CreateThread для получения дескриптора потока передайте его в API Win32 WaitForSingleObject:
WaitForSingleObject(threadhandle, INFINITE);
Если вы не используете CreateThread (потому что используете другой пакет потоковой передачи), или, возможно, ваш поток всегда жив...
Затем вы можете использовать WaitForSingleObject. Просто создайте событие сначала с помощью API Win32 CreateEvent и дождитесь, когда событие будет установлено с помощью WaitForSingleObject. В конце вашего потока установите событие SetEvent, и вы можете reset событие с ResetEvent.
Большинство пакетов потоковой передачи, хотя и будут иметь собственный способ дождаться потока. Как и в boost:: thread вы можете использовать .join() или boost:: состояние.