Страницы

Поиск по вопросам

четверг, 6 декабря 2018 г.

Как лучше всего убить зависший поток?

std::thread * tr1; tr1 = new std::thread([&]() { function(); // функция что то считает Sleep(3000000); // допустим это означает зависание });
Запущенный поток по каким то причинам завис, таймер определил, что поток выполняется дольше времени. Как можно убить поток, чтобы он не висел в памяти и не выполнял вычисления? В потоке нет никаких мьютексов и.т.д. Никакие переменные разрушится не смогут, туда передаётся указатель, который при обнаружении что таймер превышен задается в ноль. Больше поток ни с кем и ни с чем не контактирует.
Как его можно убить или поставить на паузу?


Ответ

Если на винде, то
TerminateThread(tr1->native_handle,0);
используйте на свой страх и риск :D

Комментариев нет:

Отправить комментарий