|
|
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
День добрый. Как вы определяете, жив поток или уже завершился? pthread_join-то блокирующий =( Мне нужно узнать, не завершился ли поток аварийно. Конечно, могу использовать свой флаг для проверки этого состояния, но неужели нет такой ф-ии pthread_*() ? Использование альтернативной библиотеки с потоками как-то не привлекательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 12:24:55 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
Коллеги, это делает ф-я pthread_kill с сигналом = 0! man pthread_kill вобщем =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 15:02:56 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
То самое, что тебе надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 15:10:08 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
DronordКоллеги, это делает ф-я pthread_kill с сигналом = 0! man pthread_kill вобщем =) Хм. А если поток был завершен, но не отдетачен? Тогда он будет существовать и ошибки, возможно, ESRCH не возникнет. Или я что-то не верно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 15:15:12 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
Детач я не использую. В мане никаких оговорок о детаче нет. Ф-я 100% работает для потока без обособления, проверил уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 15:19:14 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
DronordДетач я не использую. В мане никаких оговорок о детаче нет. Ф-я 100% работает для потока без обособления, проверил уже. Можешь привести свой ман? У меня: автор PTHREAD_SIGNAL(3) PTHREAD_SIGNAL(3) ... DESCRIPTION ... pthread_kill send signal number signo to the thread thread. The signal is delivered and handled as described in kill(2). ... ERRORS ... The pthread_kill function returns the following error codes on error: EINVAL signo is not a valid signal number ESRCH the thread thread does not exist (e.g. it has already terminated) KILL(2) Linux Programmer’s Manual KILL(2) ... ОПИСАНИЕ ... Если sig равен 0, то сигнал не посылается, но выполняется проверкана возникновение ошибок в процессе. ... НАЙДЕННЫЕ ОШИБКИ EINVAL Задан неправильный тип сигнала. ESRCH Процесс или группа не существуют. Заметьте, что существующий процесс можетбыть зомби-процессом, который ужепод ал запрос на завершение работы, но ещене прошел через функцию wait(). EPERM У процесса нет достаточных прав для того, чтобы послать сигналыодному из процессов-получателей. Для того, чтоб ы процесс мог послать сигнал процессу pid, он должен либо иметь привилегии root, либо его реальныйили эффективн ый идентификатор пользователя должен быть равенреальному или сохраненному при помощи set-user-ID идентификатору пользователя процесса-получателя. В случае с SIGCONT, для посылки и приема сигнала процессу достаточнобыть час тью этой же сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 15:24:47 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
Я не спорю, что твоя находка работает. Я хотел бы разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 15:25:54 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
У меня солярис: http://www.opennet.ru/man.shtml?topic=pthread_kill&category=3&russian=4 Единственное опасение при использовании этой ф-ии: нельзя ни в одном потоке устанавливать функцию-обработчик нулевого сигнала. Иначе процесс завершится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 15:36:38 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
DronordУ меня солярис: http://www.opennet.ru/man.shtml?topic=pthread_kill&category=3&russian=4 Единственное опасение при использовании этой ф-ии: нельзя ни в одном потоке устанавливать функцию-обработчик нулевого сигнала. Иначе процесс завершится. Да, скудно как то. автор PTHREAD_JOIN(3) PTHREAD_JOIN(3) NAME pthread_join - wait for termination of another thread SYNOPSIS #include <pthread.h> int pthread_join(pthread_t th, void **thread_return); DESCRIPTION pthread_join suspends the execution of the calling thread until the thread identified by th terminates, either by calling pthread_exit(3) or by being cancelled. If thread_return is not NULL, the return value of th is stored in the location pointed to by thread_return. The return value of th is either the argument it gave to pthread_exit(3), or PTHREAD_CANCELED if th was cancelled. The joined thread th must be in the joinable state: it must not have been detached using pthread_detach(3) or the PTHREAD_CREATE_DETACHED attribute to pthread_create(3). When a joinable thread terminates, its memory resources (thread descriptor and stack) are not deallocated until another thread performs pthread_join on it. Therefore, pthread_join must be called once for each joinable thread cre- ated to avoid memory leaks. At most one thread can wait for the termination of a given thread. Calling pthread_join on a thread th on which another thread is already waiting for termination returns an error. Вообщем, согласен с твоим вариантом. На процесс зомби pthread_kill не будет обращать внимания (будет возвращать ошибку). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 15:53:59 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
Поскольку в линуксе потоки реализованы как процессы, то тебе актуальна тема про зомби, а вообще потоки могут быть в состоянии зомби? /-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 16:19:40 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
DronordПоскольку в линуксе потоки реализованы как процессы, то тебе актуальна тема про зомби, а вообще потоки могут быть в состоянии зомби? /-) Х/з. Просто так не оговаривали бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 17:00:24 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
Где оговаривают зомби? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 17:36:43 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
DronordГде оговаривают зомби? В первой части первого мною приведенного мана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 18:27:01 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
Ааа, это для линукса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 18:42:55 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
DronordПоскольку в линуксе потоки реализованы как процессы, то тебе актуальна тема про зомби, а вообще потоки могут быть в состоянии зомби? /-) Могут. Зомби это любой связанный (attached) процесс/поток, который уже завершился и код его завершения не был прочитал - тем самым мы принуждаем операционную систему резервировать запись об уже канувшем в лету процессе/потоке на случай если все же кто-то прийдет за кодом завершения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 12:03:20 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
Вчера до 23 экспериментировал, нормально все. Про завершенный и неприсоединненый поток kill возвращает ESRCH, на отсоединенный и завершенный тоже ESRCH/ Ghfdlf солярки дома нет, на Linuxe тренировался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 12:54:35 |
|
||
|
Состояние pthread потока
|
|||
|---|---|---|---|
|
#18+
blindedВчера до 23 экспериментировал, нормально все. Про завершенный и неприсоединненый поток kill возвращает ESRCH, на отсоединенный и завершенный тоже ESRCH/ Ghfdlf солярки дома нет, на Linuxe тренировался Я тоже так понял. Понятие terminate, означает, что поток завершил свое выполнение, но еще не дошел до стадии уничтожения. kill/pthread_kill 0 же возвращает 0, только если поток еще не terminate, т.е. не "закончил". Остается только загадкой, почему в фильмах про терминатора, терминатор не "заканчивал" (сажал в тюрьму ;) ), а убивал (отсоединял от мира). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2007, 13:04:11 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34857717&tid=2028033]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
198ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 540ms |

| 0 / 0 |
