pthread_tryjoin_np, pthread_timedjoin_np -
пытается
присоединиться
к
завершённой
нити
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 <
[email protected]>, kogamatranslator49
<
[email protected]>, Kogan, Max Is <
[email protected]>, Yuri
Kozlov <
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]