とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

7.24 Threads <threads.h> 翻訳中

とりあえず 7.24.1 Introduction を翻訳してみた。ホント英語力ないので時間かかるし間違ってる可能性大だし,翻訳泣けてきます。しかもスレッド周りにも疎いという。調べながらやってますが,どうしたもんかのw

翻訳

原文,訳文の順に交互。

7.24 Threads

7.24 スレッド

7.24.1 Introduction

7.24.1 概説

1The header defines several macros, types, enumeration constants, and
functions that support multiple threads of execution.

ヘッダは複数のスレッドの実行をサポートするいくつかのマクロ,型,列挙定数と関数を定義する。

2The macros are
ONCE_FLAG_INIT
which expands to a value that can be used to initialize an object of type once_flag;
and
TSS_DTOR_ITERATIONS
which expands to an integer constant expression representing the maximum number of
times that destructors will be called when a thread terminates.

マクロ
ONCE_FLAG_INIT
は,once_flag 型のオブジェクトを初期化できる値に展開し,
マクロ
TSS_DTOR_ITERATIONS
スレッドが終了する時に呼ばれるデストラクタの最大回数を表す整数定数式に展開する。

3The types are
cnd_t
which is an object type that holds an identifier for a condition variable;
thrd_t
which is an object type that holds an identifier for a thread;
tss_t
which is an object type that holds an identifier for a thread-specific storage pointer;
mtx_t
which is an object type that holds an identifier for a mutex;
tss_dtor_t
which is the function pointer type void (*)(void*),used for a destructor for a
thread-specific storage pointer;
thrd_start_t
which is the function pointer type int (*)(void*) that is passed to thrd_create
to create a newthread;
once_flag
which is an object type that holds a flag for use by call_once;and
xtime
which is a structure type that holds a time specified in seconds and nanoseconds.The
structure shall contain at least the following members, in anyorder.
time_t sec;
long nsec;


cnd_t
は,条件変数の識別子を保持するオブジェクト型を表し,型
thrd_t
はスレッドの識別子を保持するオブジェクト型を表し,型
tss_t
はスレッド特有ストレージポインタの識別子の保持するオブジェクト型を表し,型
mtx_t
ミューテックス識別子のを保持するオブジェクト型を表し,型
tss_dtor_t
はスレッド特有ストレージポインタのためのデストラクタとして用いられる,関数へのポインタ型 void (*)(void*),使えるを保持し,型
thrd_start_t
は新しいスレッドを作るための thrd_create へ渡される関数へのポインタ型 int (*)(void*) を保持し,型
once_flag
は call_once によってフラグとして用いられるオブジェクト型を保持し,型
xtime
は時間を規定する秒とナノ秒を保持する構造体型を表す。この構造体は次のメンバを順序を問わず含む。
time_t sec;
long nsec;

4The enumeration constants are
mtx_plain
which is passed to mtx_init to create a mutexobject that supports neither timeout nor
test and return;
mtx_recursive
which is passed to mtx_init to create a mutexobject that supports recursive locking;
mtx_timed
which is passed to mtx_init to create a mutexobject that supports timeout;
mtx_try
which is passed to mtx_init to create a mutexobject that supports test and return;
thrd_timeout
which is returned by a timed wait function to indicate that the time specified in the call
wasreached without acquiring the requested resource;
thrd_success
which is returned by a function to indicate that the requested operation succeeded;
thrd_busy
which is returned by a function to indicate that the requested operation failed because a
resource requested by a test and return function is already in use;
thrd_error
which is returned by a function to indicate that the requested operation failed; and
thrd_nomem
which is returned by a function to indicate that the requested operation failed because it
wasunable to allocate memory.

列挙定数
mtx_plain
タイムアウトもテストもリターンもサポートしないミューテックスオブジェクトを作るために mtx_init を通して渡され,列挙定数
mtx_recursive
は再帰ロックをサポートするミューテックスオブジェクトを作るために mtx_init を通して渡され,列挙定数
mtx_timed
はタイムアウトをサポートするミューテックスオブジェクトを作るために mtx_init を通して渡され,列挙定数
mtx_try
はテストとリターンをサポートするミューテックスオブジェクトを作るために mtx_init を通して渡され,列挙定数
thrd_timeout
は要求されたリソースを取得せずに指定した時間に達したと知らせるためにtimed wait 関数から返され,列挙定数
thrd_success
は要求された操作が成功したと知らせるために関数から返され,列挙定数
thrd_busy
は要求された操作がすでに test および return 関数によってリソースを取得され使われているのために失敗したと知らせるために関数から返され,列挙定数
thrd_error
は要求された操作が失敗したと知らせるために関数から返され,そして列挙定数
thrd_nomem
はメモリを確保できなかったために要求された操作を失敗したと知らせるために関数から返される。

参照元

Draft N1425 (PDF)
7.24 Threads
7.24.1 Introduction