Как убить pthread в ANSI C - PullRequest
       23

Как убить pthread в ANSI C

1 голос
/ 27 ноября 2010

У меня проблема с pthreads, использующим ANSI C в Linux.

Я хочу получать команды, используя поток, поэтому он ждет их.Но в определенном случае мне нужно убить его.

Если я использую pthread_kill (), он посылает сигнал и убивает весь процесс.И, если я на правильном пути, pthread_cancel требует, чтобы поток был подготовлен к нему.

Есть ли какой-нибудь более чистый или более простой способ убить тему из другой?

Спасибо.

1 Ответ

4 голосов
/ 27 ноября 2010

Вы не говорите, какую команду / сообщение ожидает ваша ветка, но если вы можете отправить ей сообщение «Пожалуйста, убьете себя», а затем дождитесь его смерти с помощью pthread_join (...) , вы будете намного счастливее.

Если ваш поток ожидает файловый дескриптор, вы можете использовать poll () или select () и заставить его ждать два файловых дескриптора. Тогда ваш основной поток может отправлять ему сообщения на втором.

Если ваш поток ожидает событий графического интерфейса, большинство наборов инструментов имеют возможность отправлять ваши собственные сообщения. Например, PostMessage () в Win32 или XSendEvent () в X11.

...