powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Состояние pthread потока
17 сообщений из 17, страница 1 из 1
Состояние pthread потока
    #34856399
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый.

Как вы определяете, жив поток или уже завершился? pthread_join-то блокирующий =(

Мне нужно узнать, не завершился ли поток аварийно. Конечно, могу использовать свой флаг для проверки этого состояния, но неужели нет такой ф-ии pthread_*() ?

Использование альтернативной библиотеки с потоками как-то не привлекательно.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857110
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, это делает ф-я pthread_kill с сигналом = 0!
man pthread_kill вобщем =)
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857156
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То самое, что тебе надо
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857183
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DronordКоллеги, это делает ф-я pthread_kill с сигналом = 0!
man pthread_kill вобщем =)

Хм. А если поток был завершен, но не отдетачен? Тогда он будет существовать и ошибки, возможно, ESRCH не возникнет.

Или я что-то не верно понял?
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857207
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Детач я не использую. В мане никаких оговорок о детаче нет. Ф-я 100% работает для потока без обособления, проверил уже.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857233
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, для посылки и приема сигнала процессу достаточнобыть час
тью этой же сессии.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857239
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не спорю, что твоя находка работает. Я хотел бы разобраться.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857295
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня солярис: http://www.opennet.ru/man.shtml?topic=pthread_kill&category=3&russian=4
Единственное опасение при использовании этой ф-ии: нельзя ни в одном потоке устанавливать функцию-обработчик нулевого сигнала. Иначе процесс завершится.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857381
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 не будет обращать внимания (будет возвращать ошибку).
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857489
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поскольку в линуксе потоки реализованы как процессы, то тебе актуальна тема про зомби, а вообще потоки могут быть в состоянии зомби? /-)
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857717
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DronordПоскольку в линуксе потоки реализованы как процессы, то тебе актуальна тема про зомби, а вообще потоки могут быть в состоянии зомби? /-)

Х/з. Просто так не оговаривали бы.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34857880
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где оговаривают зомби?
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34858087
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DronordГде оговаривают зомби?

В первой части первого мною приведенного мана.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34858142
Dronord
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ааа, это для линукса.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34859668
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DronordПоскольку в линуксе потоки реализованы как процессы, то тебе актуальна тема про зомби, а вообще потоки могут быть в состоянии зомби? /-)

Могут. Зомби это любой связанный (attached) процесс/поток, который уже завершился и код его завершения не был прочитал - тем самым мы принуждаем операционную систему резервировать запись об уже канувшем в лету процессе/потоке на случай если все же кто-то прийдет за кодом завершения.
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34859911
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вчера до 23 экспериментировал, нормально все. Про завершенный и неприсоединненый поток kill возвращает ESRCH, на отсоединенный и завершенный тоже ESRCH/ Ghfdlf солярки дома нет, на Linuxe тренировался
...
Рейтинг: 0 / 0
Состояние pthread потока
    #34859948
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedВчера до 23 экспериментировал, нормально все. Про завершенный и неприсоединненый поток kill возвращает ESRCH, на отсоединенный и завершенный тоже ESRCH/ Ghfdlf солярки дома нет, на Linuxe тренировался

Я тоже так понял. Понятие terminate, означает, что поток завершил свое выполнение, но еще не дошел до стадии уничтожения. kill/pthread_kill 0 же возвращает 0, только если поток еще не terminate, т.е. не "закончил".

Остается только загадкой, почему в фильмах про терминатора, терминатор не "заканчивал" (сажал в тюрьму ;) ), а убивал (отсоединял от мира).
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Состояние pthread потока
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]