Я использую pthread_create(&thread1, &attrs, //... , //...);
и потребность, если некоторое условие произошло потребность уничтожить этот поток, как уничтожить это?
Сначала храните идентификатор нитки
pthread_create(&thr, ...)
, затем позже вызовите
pthread_cancel(thr)
Однако это не рекомендуемая практика программирования! Лучше использовать междоворенный механизм связи, такими как семафоры или сообщения для связи с низом, что он должен прекратить выполнение.
Обратите внимание, что Pthread_kill (...) фактически не прекращает приемную нить, но вместо этого обеспечивает ему сигнал, и это зависит от сигнала и обработчиков сигналов, что происходит.
Я согласен с Антти, лучшей практикой было бы реализовать некоторую контрольную точку(ы), где поток проверяет, должен ли он завершиться. Эти контрольные точки могут быть реализованы несколькими способами, например: общая переменная с блокировкой или событие, при котором поток проверяет, установлена ли она (поток может выбрать ожидание нулевого времени).