ШАРИК Опубликовано 8 октября, 2016 Поделиться Опубликовано 8 октября, 2016 Всем привет . Как ожидать завершения нескольких потоков ? Один поток создаю и ожидаю так : HANDLE hThread; hThread = CreateThread(NULL, 0, &ThreadProc, 0, 0, NULL); WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 8 октября, 2016 Поделиться Опубликовано 8 октября, 2016 Привет! Достаточно открыть MSDN на тему WaitForSingleObject и во второй же строчке описания увидеть ответ на твой вопрос. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 8 октября, 2016 Поделиться Опубликовано 8 октября, 2016 http://www.mediascan.by/index.files/p4.pdf Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 Подскажите , что я не так делаю? Скрытый текст 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]); Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 Вроде все так. Что говорит GetLastError? Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 15 минуту назад, keng сказал: Вроде все так. Что говорит GetLastError? Прикол в том , что программа вылетает . И GetLastError сказать ничего не успевает ( Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 9 октября, 2016 Поделиться Опубликовано 9 октября, 2016 В каком смысле? Ставишь брейкпоинт на ее вызов и все. При вылете смотришь, что она вернула, а дальше в MSDN читаешь расшифровку кода ошибки. Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 7 минут назад, keng сказал: В каком смысле? Ставишь брейкпоинт на ее вызов и все. При вылете смотришь, что она вернула, а дальше в MSDN читаешь расшифровку кода ошибки. Я кажется понял , в чём ошибка . У меня DWORD WINAPI ThreadProc(CONST LPVOID lpParam); А для WaitForMultipleObjects надо void thread_0() Не так ли ? Ссылка на комментарий Поделиться на другие сайты Поделиться
ШАРИК Опубликовано 9 октября, 2016 Автор Поделиться Опубликовано 9 октября, 2016 (изменено) Всё работает . Но бывает такое , что последовательность создания и завершения второстепенных потоков меняется .Это нормально ? На скрине показано , как должно быть . Изменено 9 октября, 2016 пользователем ШАРИК Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения