Перейти к содержанию

Ожидание завершения потокОВ


Рекомендуемые сообщения

Всем привет . Как ожидать завершения нескольких потоков ?
Один поток создаю и ожидаю так :

HANDLE hThread;
hThread = CreateThread(NULL, 0, &ThreadProc, 0, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);

 

Ссылка на комментарий
Поделиться на другие сайты

Подскажите , что я не так делаю?
 

Скрытый текст

HANDLE    hThread[2];
DWORD    dwThread[2];
hThread[0] = CreateThread(NULL, 0, ThreadProc,   NULL,0, &dwThread[0]);
hThread[1] = CreateThread(NULL, 0, ThreadProc,     NULL, 0, &dwThread[1]);
if (WaitForMultipleObjects(2, hThread, TRUE, INFINITE) == WAIT_FAILED)
			  {
			  }
CloseHandle(hThread[0]);
CloseHandle(hThread[1]);

 

 

Ссылка на комментарий
Поделиться на другие сайты

15 минуту назад, keng сказал:

Вроде все так. Что говорит GetLastError?

Прикол в том , что программа вылетает . И GetLastError сказать ничего не успевает (

Ссылка на комментарий
Поделиться на другие сайты

В каком смысле? Ставишь брейкпоинт на ее вызов и все. При вылете смотришь, что она вернула, а дальше в MSDN читаешь расшифровку кода ошибки.

Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, keng сказал:

В каком смысле? Ставишь брейкпоинт на ее вызов и все. При вылете смотришь, что она вернула, а дальше в MSDN читаешь расшифровку кода ошибки.

Я кажется понял , в чём ошибка .
У меня
DWORD WINAPI ThreadProc(CONST LPVOID lpParam);
А для WaitForMultipleObjects надо
void thread_0()
Не так ли ?

Ссылка на комментарий
Поделиться на другие сайты

Всё работает . Но бывает такое , что последовательность создания и завершения второстепенных потоков меняется .Это нормально ?
На скрине показано , как должно быть .
pS3a2rV8vUo.jpg

Изменено пользователем ШАРИК
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.