Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Библиотека потоков POSIX (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.

АТРИБУТЫ

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

СТАНДАРТЫ

       GNU, о чём свидетельствует наличие суффикса «_np» (nonportable) в именах.

ИСТОРИЯ

       glibc 2.3.3.

ОШИБКИ

       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) {
               /* Handle error */
           }

           ts.tv_sec += 5;

           s = pthread_timedjoin_np(thread, NULL, &ts);
           if (s != 0) {
               /* Handle error */
           }

СМОТРИТЕ ТАКЖЕ

       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>,      Darima      Kogan
       <silverdk99@gmail.com>, Max  Is  <ismax799@gmail.com>,  Yuri  Kozlov  <yuray@komyakino.ru>,  Иван  Павлов
       <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

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

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

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                            pthread_tryjoin_np(3)