URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6740
[ Назад ]

Исходное сообщение
"как получить список всех текущих потоков"

Отправлено vasyakvv , 09-Сен-07 21:26 
Доброго времени суток всем!
Есть такая проблема: в многопоточной программе нужно завершить все потоки(pthread_cancel(), pthread_join()) по сигналу. Как для этого получить список всех работающих потоков?(tid'ы) у очень не хочется запоминать их по мере создания. Может есть такая функция, выдающая все потоки?
заранее спасибо.

Содержание

Сообщения в этом обсуждении
"как получить список всех текущих потоков"
Отправлено int_0dh , 10-Сен-07 07:05 
>Доброго времени суток всем!
>Есть такая проблема: в многопоточной программе нужно завершить все потоки(pthread_cancel(), pthread_join()) по
>сигналу. Как для этого получить список всех работающих потоков?(tid'ы) у очень
>не хочется запоминать их по мере создания. Может есть такая функция,
>выдающая все потоки?
>заранее спасибо.

нету такой функции.
"Если тебе нужен PL/I - ты знаешь где его взять" (c)


"как получить список всех текущих потоков"
Отправлено Michelnok , 10-Сен-07 15:24 
>не хочется запоминать их по мере создания

А надо...


"как получить список всех текущих потоков"
Отправлено Аноним , 10-Сен-07 15:36 
>Доброго времени суток всем!
>Есть такая проблема: в многопоточной программе нужно завершить все потоки(pthread_cancel(), pthread_join()) по
>сигналу.

Хорошие сигналы (TERM,ABRT,KILL) должны сами приходить всем потокам (при отправке процессу).


"как получить список всех текущих потоков"
Отправлено vic , 10-Сен-07 15:40 
>Доброго времени суток всем!
>Есть такая проблема: в многопоточной программе нужно завершить все потоки(pthread_cancel(), pthread_join()) по
>сигналу. Как для этого получить список всех работающих потоков?(tid'ы) у очень
>не хочется запоминать их по мере создания. Может есть такая функция,
>выдающая все потоки?
>заранее спасибо.

Работающий поток может уже не существовать на момент выхода из такой функции если бы она был бы, поэтому ее и нет.


"как получить список всех текущих потоков"
Отправлено vasyakvv , 11-Сен-07 00:45 
Вообще то мне нужно закрыть все потоки по получении сигнала int, и разослать клиентам сообщния о зарытии соединения, может кто подскажет, как это сделать?



"как получить список всех текущих потоков"
Отправлено dronord , 11-Сен-07 10:39 
В голову пришло два способа:
1. Иметь в запасе второй, управляющий сокет. Скорее всего UDP.
2. Сделать сокет глоб. переменной и с помощью IPC, чтобы не мешать основной работе сокета, отправить сообщение клиентам.

Вообще, мне оба варианта не нравятся =)