Provided by: manpages-ru-dev_4.21.0-2_all bug

ИМЯ

       pthread_tryjoin_np, pthread_timedjoin_np - пытается присоединиться к завершённой нити

LIBRARY

       POSIX threads library (libpthread, -lpthread)

СИНТАКСИС

       #define _GNU_SOURCE             /* Смотрите feature_test_macros(7) */
       #include <pthread.h>

       int pthread_tryjoin_np(pthread_t thread, void **retval);
       int pthread_timedjoin_np(pthread_t thread, void **retval,
                                const struct timespec *abstime);

ОПИСАНИЕ

       Эти  функции  работают  также  как pthread_join(3) за исключением различий, описанных в данной справочной
       странице.

       Функция pthread_tryjoin_np() выполняет неблокирующую присоединение к нити thread, возвращая в *retval код
       выхода нити. Если thread ещё не завершилась, то вместо блокировки, как это делает pthread_join(3),  вызов
       возвращает ошибку.

       The  pthread_timedjoin_np()   function  performs  a join-with-timeout.  If thread has not yet terminated,
       then the call blocks until a maximum time, specified in  abstime,  measured  against  the  CLOCK_REALTIME
       clock.  If the timeout expires before thread terminates, the call returns an error.  The abstime argument
       is a timespec(3)  structure, specifying an absolute time measured since the Epoch (see time(2)).

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

       При успешном выполнении эти функции возвращают 0; при ошибке возвращается номер ошибки.

ОШИБКИ

       Эти  функции  могут  завершиться  с  теми  же  ошибками  что  и  pthread_join(3).  Дополнительно, функция
       pthread_tryjoin_np() может завершиться со следующей ошибкой:

       EBUSY  Нить thread не завершилась на момент вызова.

       Дополнительно, функция pthread_timedjoin_np() может завершиться со следующими ошибками:

       EINVAL Некорректное значение abstime (tv_sec меньше 0 или tv_nsec больше 1e9).

       ETIMEDOUT
              Истёк период ожидания раньше завершения thread.

       Функция pthread_timedjoin_np() никогда не возвращает ошибку EINTR.

ВЕРСИИ

       These functions were added in glibc 2.3.3.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌─────────────────────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ ИнтерфейсАтрибутЗначение │
       ├─────────────────────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │ pthread_tryjoin_np(), pthread_timedjoin_np()                        │ Безвредность в нитях │ MT-Safe  │
       └─────────────────────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       Данные функции являются не стандартизированными расширениями GNU, о чём свидетельствует наличие  суффикса
       «_np» (nonportable).

ДЕФЕКТЫ

       The  pthread_timedjoin_np()   function  measures time by internally calculating a relative sleep interval
       that  is  then  measured  against  the  CLOCK_MONOTONIC  clock  instead  of  the  CLOCK_REALTIME   clock.
       Consequently, the timeout is unaffected by discontinuous changes to the CLOCK_REALTIME clock.

ПРИМЕРЫ

       Следующий код ждёт присоединения к нити не более 5 секунд:

           struct timespec ts;
           int s;

           ...

           if (clock_gettime(CLOCK_REALTIME, &ts) == -1) {
               /* обработка ошибки */
           }

           ts.tv_sec += 5;

           s = pthread_timedjoin_np(thread, NULL, &ts);
           if (s != 0) {
               /* обработка ошибки */
           }

СМ. ТАКЖЕ

       clock_gettime(2), pthread_exit(3), pthread_join(3), timespec(3), pthreads(7)

ПЕРЕВОД

       Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>,
       kogamatranslator49    <r.podarov@yandex.ru>,    Kogan,   Max   Is   <ismax799@gmail.com>,   Yuri   Kozlov
       <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
       или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное  письмо
       на man-pages-ru-talks@lists.sourceforge.net.

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