Man page - pthread_tryjoin_np(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

PTHREAD_TRYJOIN_NP

名 前
書 式
説 明
返 り 値
エ ラ ー
バ ー ジ ョ ン
属 性
準 拠

バ グ
関 連 項 目
こ の 文 書 に つ い て

名 前

pthread_tryjoin_np, pthread_timedjoin_np - 終 了 し た ス レ ッ ド の join を 試 み る

書 式

#define _GNU_SOURCE /* See 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 を 付 け て コ ン パ イ ル と リ ン ク を 行 う 。

説 明

こ れ ら の 関 数 は pthread_join (3) と 同 じ よ う に 動 作 す る が 、 こ の ペ ー ジ で 説 明 す る 違 い が あ る 。

pthread_tryjoin_np () 関 数 は 、 ス レ ッ ド thread の 非 停 止 (nonblocking) で の join を 実 行 し 、 ス レ ッ ド の 終 了 ス テ ー タ ス を *retval に 入 れ て 返 す 。 thread が ま だ 終 了 し て い な い 場 合 は 、 pthread_join (3) の よ う に 停 止 (block) せ ず に 、 エ ラ ー を 返 す 。

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 structure of the following form, specifying an absolute time measured since the Epoch (see time (2)):

struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};

返 り 値

成 功 す る と 、 こ れ ら の 関 数 は 0 を 返 す 。 エ ラ ー の 場 合 、 エ ラ ー 番 号 を 返 す 。

エ ラ ー

こ れ ら の 関 数 は pthread_join (3) と 同 じ エ ラ ー で 失 敗 す る 。 pthread_tryjoin_np () は さ ら に 以 下 の エ ラ ー で 失 敗 す る 場 合 が あ る 。

EBUSY

呼 び 出 し を 行 っ た 時 点 で は thread は ま だ 終 了 し て い な い 。

pthread_timedjoin_np () は さ ら に 以 下 の エ ラ ー で 失 敗 す る 場 合 が あ る 。
ETIMEDOUT

thread が 終 了 す る 前 に 呼 び 出 し が タ イ ム ア ウ ト と な っ た 。

EINVAL

abstime の 値 が 無 効 で あ る ( tv_sec が 0 よ り 小 さ い か 、 tv_nsec 1e9 が よ り 大 き い )。

pthread_timedjoin_np () が エ ラ ー EINTR を 返 す こ と は な い 。

バ ー ジ ョ ン

こ れ ら の 関 数 は glibc バ ー ジ ョ ン 2.3.3 で 初 め て 登 場 し た 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-32827-1.png

準 拠

こ れ ら の 関 数 は 非 標 準 の GNU に よ る 拡 張 で あ る 。 そ の た め 、 名 前 に "_np" (nonportable; 移 植 性 が な い ) と い う 接 尾 辞 が 付 い て い る 。

以 下 の コ ー ド は 、 最 大 5 秒 ま で join を 待 つ 。

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 */
}

バ グ

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.

関 連 項 目

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

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。