Как узнать, умер ли pthread - PullRequest
       4

Как узнать, умер ли pthread

7 голосов
/ 23 апреля 2011

Как узнать, умер ли pthread?

Есть ли способ проверить статус pthread?

Ответы [ 3 ]

10 голосов
/ 23 апреля 2011
if(pthread_kill(the_thread, 0) == 0)
{
    /* still running */
}

См .: pthread_kill

Примечание: существует риск, связанный с использованием pthread_kill () для проверки того, что поток все еще работает.См. Этот пост для объяснения: Как определить, жив ли pthread?

4 голосов
/ 23 апреля 2011

Если вам не нужно писать переносимое приложение и вы можете использовать расширения GNU, вы можете использовать pthread_tryjoin_np. Я считаю, что нет другого способа сделать это, кроме как установить связь между двумя потоками (например, использовать глобальный мьютекс, который удерживается потоком, пока он жив).

3 голосов
/ 15 ноября 2012

Я хочу добавить к обсуждению тот факт, что поток может просто умереть в другом случае, который здесь не упоминается в случае сигнала, такого как SIGPIPE, когда он не обрабатывается процессом хостинга или потоком, который он сам ив ситуациях, когда такой сигнал может возникнуть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...