Как завершить другой поток без задержки?
Есть поток, который периодически засыпает, просыпается, проверяет значение переменной, и если оно ложно, все повторяется, а если истинно, поток завершается. Выглядит это примерно так:
Cоздание потока:
context->exit = false;
pthread_create(thread, NULL, worker, context);
Завершение потока:
context->exit = true;
pthread_join(thread, NULL);
Выполнение потока:
void *worker(void *context) {
while (true) {
if (context->exit)
break;
sleep(timeout);
}
}
Когда флаг завершения exit устанавливается true, проходит некоторе время прежде, чем поток завершится. Как сделать так, чтобы поток завершился сразу?
Источник: Stack Overflow на русском