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