pthread_detach -
отсоединяет
нить
POSIX threads library (
libpthread,
-lpthread)
#include <pthread.h>
int pthread_detach(pthread_t thread);
Функция
pthread_detach()
помечает
нить,
указанную
thread, как
отсоединённую.
Когда
отсоединённая
нить
завершается,
её ресурсы
автоматически
отдаются
обратно
системе и
не нужно
объединять
другую
нить с
завершившей
работу.
Попытка
отсоединить
уже
отсоединённую
нить
приводит к
непредсказуемым
последствиям.
При
успешном
выполнении
pthread_detach()
возвращается
0; при ошибке
возвращается
номер
ошибки.
- EINVAL
- Нить thread
не
является
присоединяемой.
- ESRCH
- Нить с
идентификатором
thread не
найдена.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
pthread_detach() |
Безвредность
в нитях |
MT-Safe |
POSIX.1-2001, POSIX.1-2008.
После
отсоединения
нить её
нельзя
обратно
присоединить
с помощью
pthread_join(3) или
снова
сделать
присоединяемой.
Новую нить
можно
создать в
отсоединённом
состоянии
с помощью
pthread_attr_setdetachstate(3),
установив
атрибут
отсоединения
у
аргумента
attr при
pthread_create(3).
Атрибут
отсоединения
просто
определяет
поведение
системы
при
завершении
нити; он не
препятствует
завершению
нити при
завершении
работы
процесс с
помощью
exit(3)
(или
эквивалента,
если
завершается
основная
нить).
Функция
pthread_join(3)
или
pthread_detach()
должна
вызываться
для каждой
нити,
созданной
приложением,
для того,
чтобы
можно было
освободить
системные
ресурсы
нити (но,
заметим,
что
ресурсы
всех нитей,
для
которых
выполняется
одно из
этих
действий,
освобождаются
при
завершении
процесса).
Следующее
выражение
отсоединяет
вызвавшую
нить:
pthread_detach(pthread_self());
pthread_attr_setdetachstate(3),
pthread_cancel(3),
pthread_create(3),
pthread_exit(3),
pthread_join(3),
pthreads(7)
Русский
перевод
этой
страницы
руководства
был сделан
Alexey, Azamat Hackimov <
[email protected]>, kogamatranslator49
<
[email protected]>, Kogan, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]