名称
pthread_attr_init(), pthread_attr_destroy() ― スレッド属性オブジェクトの初期化または消去
構文
#include <pthread.h>
int pthread_attr_init(
pthread_attr_t *attr
);
int pthread_attr_destroy(
pthread_attr_t *attr
);
パラメータ
| attr | | 初期化または消去するスレッド属性オブジェクトへのポインター。 |
説明
pthread_attr_init() は、すべてのスレッド属性にデフォルト値を設定して、 attr が示すスレッド属性オブジェクトを初期化します。
スレッド属性オブジェクトを使用してスレッドを作成すると、新しいスレッドの属性はオブジェクトの設定値で決まります。
属性オブジェクトは、オブジェクト作成時の追加パラメータのような役割を果たします。 pthread_create() 呼び出しでは、1 つの属性オブジェクトを何度でも使用することができます。
いったんスレッド属性オブジェクトでスレッドを初期化すると、その後属性オブジェクトをどのように操作しても、すでに作成されたスレッドに影響を与えません。
スレッド属性とそのデフォルト値は、次のとおりです。
| stacksize | | POSIX.1c では、デフォルト値は定義されていません。
PA-RISC プラットフォーム用の HP-UX リリースでは、デフォルトは 64K
です。 Itanium(R) ベース プラットフォーム用の HP-UX リリースでは、デフォルトは
256K です。 |
| guardsize | | デフォルト値は PAGESIZE バイトです。 |
| stackaddr | | デフォルト値は NULL です。 |
| detachstate | | デフォルト値は PTHREAD_CREATE_JOINABLE です。 |
| contentionscope | | POSIX.1c では、デフォルト値は定義されていません。
HP-UX 11i v2 September 2004 以降では、デフォルトの競合範囲は PTHREAD_SCOPE_SYSTEM で、このデフォルトの競合範囲は pthread_scope_options(5) のマンページに記載されているオプションを使用して外部から指定することもできます。 |
| inheritsched | | POSIX.1c では、デフォルト値は定義されていません。
HP-UX でのデフォルト値は PTHREAD_INHERIT_SCHED です。 |
| schedpolicy | | POSIX.1c では、デフォルト値は定義されていません。
HP-UX でのデフォルト値は SCHED_TIMESHARE です。 |
| schedparam | | POSIX.1c では、デフォルト値は定義されていません。 |
| processor | | デフォルト値は PTHREAD_SPUINHERIT_NP です。 |
| binding_type | | デフォルト値は PTHREAD_BIND_ADVISORY_NP です。 |
初期化済みのスレッド属性オブジェクトを再度初期化した場合、結果は不定です。
pthread_attr_destroy() は、スレッド属性オブジェクト attr を消去します。 スレッド属性オブジェクトの実体が消去され、そのリソースは再利用されます。
消去された属性オブジェクトを参照した場合、結果は不定です。 属性オブジェクトは、消去されてもスレッド属性初期化ルーチン pthread_attr_init() で再び初期化できます。
すでに作成済みのスレッドは、作成時に使用した属性オブジェクトを消去しても影響を受けません。
戻り値
正常終了すると、 pthread_attr_init() と pthread_attr_destroy() は 0 を返します。
それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。
エラー
以下の条件の場合、 pthread_attr_init() 関数は、該当するエラー番号を返します。
| [ENOMEM] | | p スレッド属性オブジェクトの初期化に必要なメモリーが足りない場合。 |
| [EINVAL] | | attr で指定された値が無効の場合。 |
以下の条件の場合、 pthread_attr_destroy() 関数は、該当するエラー番号を返します。
| [EINVAL] | | attr で指定された値が無効の場合。 |
著者
pthread_attr_init() と pthread_attr_destroy() は、IEEE
POSIX P1003.1c 規格から派生しました。
標準準拠
pthread_attr_init(): POSIX 1003.1c.
pthread_attr_destroy(): POSIX 1003.1c.