Manpages

名 前

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) せ ず に 、 エ ラ ー を 返 す 。

pthread_timedjoin_np() 関 数 は 、 タ イ ム ア ウ ト 付 き の join を 行 う 。 thread が ま だ 終 了 し て い な い 場 合 、 abstime で 指 定 さ れ た 最 大 時 間 ま で 停 止 す る 。 thread が 終 了 す る 前 に タ イ ム ア ウ ト 時 間 が 経 過 し た 場 合 は 、 エ ラ ー を 返 す 。 abstime 引 き 数 は 以 下 に 示 す 構 造 体 で あ り 、 Epoch (時 刻 紀 元 ; 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 で 初 め て 登 場 し た 。

準 拠

こ れ ら の 関 数 は 非 標 準 の 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 */ }

関 連 項 目

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

こ の 文 書 に つ い て

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