Доброго времени суток всем!
Есть такая проблема: в многопоточной программе нужно завершить все потоки(pthread_cancel(), pthread_join()) по сигналу. Как для этого получить список всех работающих потоков?(tid'ы) у очень не хочется запоминать их по мере создания. Может есть такая функция, выдающая все потоки?
заранее спасибо.
>Доброго времени суток всем!
>Есть такая проблема: в многопоточной программе нужно завершить все потоки(pthread_cancel(), pthread_join()) по
>сигналу. Как для этого получить список всех работающих потоков?(tid'ы) у очень
>не хочется запоминать их по мере создания. Может есть такая функция,
>выдающая все потоки?
>заранее спасибо.нету такой функции.
"Если тебе нужен PL/I - ты знаешь где его взять" (c)
>не хочется запоминать их по мере созданияА надо...
>Доброго времени суток всем!
>Есть такая проблема: в многопоточной программе нужно завершить все потоки(pthread_cancel(), pthread_join()) по
>сигналу.Хорошие сигналы (TERM,ABRT,KILL) должны сами приходить всем потокам (при отправке процессу).
>Доброго времени суток всем!
>Есть такая проблема: в многопоточной программе нужно завершить все потоки(pthread_cancel(), pthread_join()) по
>сигналу. Как для этого получить список всех работающих потоков?(tid'ы) у очень
>не хочется запоминать их по мере создания. Может есть такая функция,
>выдающая все потоки?
>заранее спасибо.Работающий поток может уже не существовать на момент выхода из такой функции если бы она был бы, поэтому ее и нет.
Вообще то мне нужно закрыть все потоки по получении сигнала int, и разослать клиентам сообщния о зарытии соединения, может кто подскажет, как это сделать?
В голову пришло два способа:
1. Иметь в запасе второй, управляющий сокет. Скорее всего UDP.
2. Сделать сокет глоб. переменной и с помощью IPC, чтобы не мешать основной работе сокета, отправить сообщение клиентам.Вообще, мне оба варианта не нравятся =)