LINUX.ORG.RU

Работа с thread`s


0

0

1. Как сделать запуск потока в одном(и только одном)экземпляре? 2. Как контролировать в родительском потоке "нежное" завершение потока (не прибегая к ухищрениям и pthread_join)? 3, Если же без жджойна никакак, то как ему задать чтото вроде таймаута на ожидание.

anonymous

>1. Как сделать запуск потока в одном(и только одном)экземпляре?

А в чём проблема? Запусти его один раз, он и будет в одном экземпляре.. Или я не догнал вопроса?

>2. Как контролировать в родительском потоке "нежное" завершение потока (не прибегая к ухищрениям и pthread_join)?

Нуу... тут можно сигналом (pthread_kill) от порождённого потомка родительскому. Но я делал по другому. В родительском перед pthread_create делал pipe(fd[2]) и передавал fd[1] (write descriptor) запущенному потомку. Тот при выходе из функции писал туда сообщение или тупо делал close. Тогда в предке можно отлавливать это посредством select/poll натравленными на fd[0] (read desc). И таймауты там предусмотрены.

>3

См. 2.

farisey
()

> 3, Если же без жджойна никакак, то как ему задать чтото вроде таймаута на ожидание.

А если был таймаут и поток не завершился, то что?

Nihilist
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.