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

条件変数の初期化

cv が指す条件変数を初期化するには、cond_init(3C) を使用します。

cond_init の構文

#include <thread.h>

int cond_init(cond_t *cv, int type, int arg);

type は、次のいずれかになります。

0 に初期化されたメモリーに領域を確保することによって、条件変数を初期化することもできます。その場合は、type に USYNC_THREAD を指定したものと仮定されます。

複数のスレッドから、同じ条件変数を同時に初期化してはいけません。一度初期化した条件変数はほかのスレッドが使用している可能性があるので、再初期化してはいけません。

POSIX スレッドの場合については、pthread_condattr_init の構文」を参照してください。

プロセス内スコープでの条件変数

#include <thread.h>

cond_t cv;
int ret;

/* to be used within this process only */
ret = cond_init(cv, USYNC_THREAD, 0); 

プロセス間スコープでの条件変数

#include <thread.h>

cond_t cv;
int ret;

/* to be used among all processes */
ret = cond_init(&cv, USYNC_PROCESS, 0); 

cond_init の戻り値

cond_init() は、正常終了時に 0 を返します。次のいずれかの条件が検出された場合、cond_init() は失敗し、対応する値を返します。


EFAULT

説明:

cv が指すアドレスが正しくありません。


EINVAL

説明:

type を認識できません。