Уничтожьте поток в библиотеке Pthread

Я использую pthread_create(&thread1, &attrs, //... , //...); и потребность, если некоторое условие произошло потребность уничтожить этот поток, как уничтожить это?

39
задан Ciro Santilli 新疆改造中心法轮功六四事件 14 December 2018 в 15:37
поделиться

3 ответа

Сначала храните идентификатор нитки

pthread_create(&thr, ...)

, затем позже вызовите

pthread_cancel(thr)

Однако это не рекомендуемая практика программирования! Лучше использовать междоворенный механизм связи, такими как семафоры или сообщения для связи с низом, что он должен прекратить выполнение.

Обратите внимание, что Pthread_kill (...) фактически не прекращает приемную нить, но вместо этого обеспечивает ему сигнал, и это зависит от сигнала и обработчиков сигналов, что происходит.

55
ответ дан 27 November 2019 в 02:26
поделиться

Взгляните на функцию Pthread_kill () .

2
ответ дан 27 November 2019 в 02:26
поделиться

Я согласен с Антти, лучшей практикой было бы реализовать некоторую контрольную точку(ы), где поток проверяет, должен ли он завершиться. Эти контрольные точки могут быть реализованы несколькими способами, например: общая переменная с блокировкой или событие, при котором поток проверяет, установлена ли она (поток может выбрать ожидание нулевого времени).

6
ответ дан 27 November 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: