Scroll to navigation

pthread_detach(3) Library Functions Manual pthread_detach(3)

ИМЯ

pthread_detach - отсоединяет нить

LIBRARY

POSIX threads library (libpthread, -lpthread)

СИНТАКСИС

#include <pthread.h>
int pthread_detach(pthread_t thread);

ОПИСАНИЕ

Функция pthread_detach() помечает нить, указанную thread, как отсоединённую. Когда отсоединённая нить завершается, её ресурсы автоматически отдаются обратно системе и не нужно объединять другую нить с завершившей работу.

Попытка отсоединить уже отсоединённую нить приводит к непредсказуемым последствиям.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении pthread_detach() возвращается 0; при ошибке возвращается номер ошибки.

ОШИБКИ

Нить thread не является присоединяемой.
Нить с идентификатором 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 <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Darima Kogan <silverdk99@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.

15 декабря 2022 г. Linux man-pages 6.03