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

属性の初期化

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

1M バイト 

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

priority

 

新しいスレッドは親スレッドの優先順位を継承する 

inheritsched

PTHREAD_INHERIT_SCHED

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

schedpolicy

SCHED_OTHER

新しいスレッドは Solaris で定義された固定的な優先順位スケジューリングを使用する。スレッドは、優先順位の高いスレッドに取って代わられるまで、あるいはブロックするか実行権を明け渡すまで動作する 

戻り値

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


ENOMEM

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