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 |
0 |
新しいスレッドはシステムによって定義されたスタックサイズを持ちます。 |
priority |
0 |
新しいスレッドは優先順位 0 を持ちます。 |
inheritsched |
PTHREAD_EXPLICIT_SCHED |
新しいスレッドは親スレッドのスケジューリング優先順位を継承しません。 |
schedpolicy |
SCHED_OTHER |
新しいスレッドは、従来の Solaris タイムシェアリング (TS) スケジューリングクラスを使用します。 |
guardsize |
PAGESIZE |
スタックオーバーフローの保護。 |
inheritsched 属性のデフォルト値は、将来の Solaris リリースでは PTHREAD_EXPLICIT_SCHED から PTHREAD_INHERIT_SCHED に変更される可能性があります。この変更によって問題が発生する可能性を避けるために、デフォルト値を受け入れるのではなく、pthread_attr_setinheritsched() を呼び出して inheritsched 属性を希望する値に設定するようにしてください。