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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

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