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
      が終了する前に呼び出しがタイムアウトとなった。
 
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.65 の一部
  である。プロジェクトの説明とバグ報告に関する情報は
  
http://www.kernel.org/doc/man-pages/
  に書かれている。