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

属性の初期化

pthread_attr_init(3THR)

pthread_attr_init(3THR) は、オブジェクトの属性をデフォルト値に初期化します。その記憶領域は、実行中にスレッドシステムによって割り当てられます。


プロトタイプ:

int pthread_attr_init(pthread_attr_t *tattr);

#include <pthread.h>

pthread_attr_t tattr;
int ret;

/* 属性をデフォルト値に初期化する */
ret = pthread_attr_init(&tattr);

表 3–1 に属性 (tattr) のデフォルト値を示します。

表 3–1 tattr のデフォルト属性値

属性 

値 

結果 

scope

PTHREAD_SCOPE_PROCESS

新しいスレッドは非結合 (LWP に固定的に結合されない) 

detachstate

PTHREAD_CREATE_JOINABLE

スレッドの終了後に終了状態とスレッドが保存される 

stackaddr

NULL

新しいスレッドはシステムによって割り当てられたスタックアドレスをもつ 

stacksize

新しいスレッドはシステムによって定義されたスタックの大きさをもつ 

priority

新しいスレッドは優先順位 0 をもつ 

inheritsched

PTHREAD_EXPLICIT_SCHED

新しいスレッドは親スレッドのスケジューリング優先順位を継承しない 

schedpolicy

SCHED_OTHER

新しいスレッドは、同期オブジェクトの競合が発生した場合に、Solaris が定義した固定優先順位を使用する。 スレッドは、横取りされたり、またはブロックされるか CPU を譲ったときに終了する。 

戻り値

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


ENOMEM

メモリーが不足し、スレッド属性オブジェクトを初期化できないときに返されます。