0, NULL);
Есть вот такой вот вызов создания потока
Как его останосить?
Корректо остановить - через переменную флаг или event.
один из способов: DWORD WINAPI ThreadProc( _In_ LPVOID lpParameter ) { HANDLE hStopEvent = lpParameter; for (;;) { if (WaitForSingleObject(hStopEvent, 0) == WAIT_OBJECT_0) { return 0; } // какая-то полезная деятельность } return 1; } int main() { // создаем событие, по умолчанию не в сигнальном состоянии HANDLE hStopEvent = CreateEvent(nullptr, FALSE, FALSE, nullptr); // создаем поток HANDLE hThread = CreateThread(nullptr, 0, ThreadProc, hStopEvent, 0, nullptr); // типа работаем Sleep(2000); // посылаем сигнал потоку остановится SetEvent(hStopEvent); // ждем, когда поток завершится WaitForSingleObject(hThread, INFINITY); CloseHandle(hThread); CloseHandle(hStopEvent); }
Обсуждают сегодня