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

pthread_attr_init の構文

int pthread_attr_init(pthread_attr_t *tattr);
#include <pthread.h>

pthread_attr_t tattr;
int ret;

/* initialize an attribute to the default value */
ret = pthread_attr_init(&tattr);

表 3–1 は、属性 (tattr) のデフォルト値の一覧です。

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

属性 

値 

結果 

scope

PTHREAD_SCOPE_PROCESS

新しいスレッドはプロセス内のほかのスレッドと競合します。 

detachstate

PTHREAD_CREATE_JOINABLE

スレッドの終了後に終了状態とスレッド ID が保存されます。

stackaddr

NULL

新しいスレッドはシステムによって割り当てられたスタックアドレスを持ちます。 

stacksize

新しいスレッドはシステムによって定義されたスタックサイズを持ちます。 

priority

新しいスレッドは優先順位 0 を持ちます。 

inheritsched

PTHREAD_EXPLICIT_SCHED

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

schedpolicy

SCHED_OTHER

新しいスレッドは、従来の Solaris タイムシェアリング (TS) スケジューリングクラスを使用します。 

guardsize

PAGESIZE

スタックオーバーフローの保護。 


注 –

inheritsched 属性のデフォルト値は、将来の Solaris リリースでは PTHREAD_EXPLICIT_SCHED から PTHREAD_INHERIT_SCHED に変更される可能性があります。この変更によって問題が発生する可能性を避けるために、デフォルト値を受け入れるのではなく、pthread_attr_setinheritsched() を呼び出して inheritsched 属性を希望する値に設定するようにしてください。