C言語/標準ライブラリ/threads.h

出典: フリー教科書『ウィキブックス(Wikibooks)』
このページ「C言語/標準ライブラリ/threads.h」は、まだ書きかけです。加筆・訂正など、協力いただける皆様の編集を心からお待ちしております。また、ご意見などがありましたら、お気軽にトークページへどうぞ。


ISO/IEC 9899:2011(C11)で標準に追加されたヘッダー<threads.h>では、複数のスレッド実行をサポートするマクロを定義し、型、列挙定数、および関数を宣言しています[1]。 ヘッダー<threads.h>は、ヘッダー<time.h>を(暗黙に)インクルードします。 <threads.h>をインクルードすると、<time.h>が(暗黙に)インクルードされます[1]

マクロ __STDC_NO_THREADS__ を定義している実装は、このヘッダを提供する必要はなく、その機能をサポートする必要もありません[1]


マクロ[編集]

thread_local
キーワード _Thread_local に展開されます。
ONCE_FLAG_INIT
once_flag 型のオブジェクトを初期化するために使用できる値に展開されます。
TSS_DTOR_ITERATIONS
デストラクタが最大で何回実行されるかを表す整数の定数式に展開されます。

[編集]

cnd_t
条件変数の識別子を保持する完全なオブジェクトタイプです。
thrd_t
スレッドの識別子を保持する完全なオブジェクトタイプです。
tss_t
スレッド固有のストレージポインタの識別子を保持する完全なオブジェクトタイプです。ポインタです。
mtx_t
ミューテックスの識別子を保持する完全なオブジェクトタイプです。
tss_dtor_t
スレッド固有のストレージポインタのデストラクタとして使用される関数ポインタ型のvoid (*)(void*)です。
thrd_start_t
関数ポインタ型 int (*)(void*) であり,新しいスレッドを作成するために thrd_create() に渡されます。
once_flag
call_onceが使用するフラグを保持する完全なオブジェクトタイプです。

列挙された定数は以下の通りです。

mtx_plain
タイムアウトもテストもリターンもサポートしないミューテックス・オブジェクトを作るためにmtx_init()に渡されます。
mtx_recursive
再帰的ロックをサポートするミューテックス・オブジェクトを作るためにmtx_init()に渡されます。
mtx_timed
タイムアウトをサポートするミューテックス・オブジェクトを作るためにmtx_init()に渡されます。
thrd_timedout
要求されたリソースを取得することなく、呼び出しで指定された時間に達したことを示すために、timed wait関数から返されます。
thrd_success
要求された操作が成功したことを示すため、関数から返されます。
thrd_busy
テストおよびリターン関数によって要求されたリソースがすでに使用されているために、要求された操作が失敗したことを示すため、関数から返されます。
thrd_error
要求された操作が失敗したことを示すため、関数から返されます。
thrd_nomem

要求された操作が、メモリを割り当てられなかったために失敗したことを示すため、関数から返されます。

関数[編集]

初期化関数[編集]

状態変数関数[編集]

ミューテックス関数[編集]

スレッド固有ストレージ関数[編集]

脚註[編集]

  1. ^ 1.0 1.1 1.2 N1570 Committee Draft — April 12, 2011 9899:201x(C11). ISO/IEC. p. p.376, §7.26.1 Introduction. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf. 

参考文献[編集]