LINUX.ORG.RU

История изменений

Исправление asaw, (текущая версия) :

Остановить только с помощью самой нити - сделать там какую-нибуть condition_variable и устроить логику так, чтобы нить эту cv периодически проверяла. После этого делать http://en.cppreference.com/w/cpp/thread/thread/join Впрочем, с pthreads на самом деле всё обстоит примерно так же - pthread_cancel с гарантией останавливает нить только в точке отмены типа системного вызова read(), но выхода из такой функции ты можешь добиться послав сигнал вроде того же SIGINT.

Исправление asaw, :

Остановить только с помощью самой нити - сделать там какую-нибуть condition_variable и устроить логику так, чтобы нить эту cv периодически проверяла. После этого делать http://en.cppreference.com/w/cpp/thread/thread/join Впрочем, с pthreads на самом деле всё обстоит примерно так же - pthread_cancel останавливает нить только в точке отмены типа системного вызова read(), но выхода из такой функции ты можешь добиться послав сигнал вроде того же SIGINT.

Исходная версия asaw, :

Остановить только с помощью самой нити - сделать там какую-нибуть condition_variable и устроить логику так, чтобы нить эту cv периодически проверяла. После этого делать http://en.cppreference.com/w/cpp/thread/thread/join Впрочем, с pthreads на самом деле всё обстоит примерно так же - pthread_cancel останавливает нить только в точке отмены типа системного вызова read(), но этого же самого ты можешь добиться послав сигнал вроде того же SIGINT.