マルチスレッドのプログラミング

スレッド実行の停止

thr_suspend(3T)

thr_suspend(3T) は、target_thread で指定したスレッドの実行をただちに停止させます。thr_suspend() が正常終了した時点で、指定のスレッドは実行状態ではありません。

停止しているスレッドに対して再度 thr_suspend() を発行しても効果はありません。停止しているスレッドをシグナルで呼び起こすことはできません。スレッドが実行を再開するまでシグナルは保留状態のままです。


#include <thread.h>

int thr_suspend(thread_t tid);

次の例では、pthread で定義されている pthread_t tid と Solaris スレッドの thread_t tid が同じです。tid 値は、代入によっても型変換によっても使用できます。


thread_t tid; /* thr_create() からの tid */

/* pthread_create() で生成されたスレッドからの */
/* Solaris tid に相当する pthread */
pthread_t ptid;	

int ret;

ret = thr_suspend(tid);

/* 型変換で pthread ID 変数を使用する */
ret = thr_suspend((thread_t) ptid);	

戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、thr_suspend() は失敗し、対応する値を返します。


ESRCH

現在のプロセスに tid が存在しません。