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

rwlock_init(3T)


#include <synch.h>  (または #include <thread.h>)

int rwlock_init(rwlock_t *rwlp, int type, void * arg);

rwlock_init(3T) は、rwlp が指す読み取り / 書き込みロックを初期化してロック解除状態に設定します。type には次のいずれかを指定できます (arg は現在は無視されます)。(POSIX スレッドについては、「pthread_rwlock_init(3T)」を参照)。

複数のスレッドから同じ読み取り / 書き込みロックを同時に初期化してはいけません。0 に初期化したメモリーに領域を確保することによって、読み取り / 書き込みロックを初期化することもできます。その場合は、typeUSYNC_THREAD を指定したものとみなされます。一度初期化した読み取り / 書き込みロックは、他のスレッドで使われている可能性があるので再初期化してはいけません。

プロセス内スコープでの読み取り / 書き込みロックの初期化


#include <thread.h>

rwlock_t rwlp;
int ret;

/* このプロセスの中だけで使用する */
ret = rwlock_init(&rwlp, USYNC_THREAD, 0); 

プロセス間スコープでの読み取り / 書き込みロックの初期化


#include <thread.h>

rwlock_t rwlp;
int ret;

/* すべてのプロセスの間で使用する */
ret = rwlock_init(&rwlp, USYNC_PROCESS, 0); 

戻り値

正常終了時は 0 です。それ以外の戻り値は、エラーが発生したことを示します。以下のいずれかの条件が検出されると、この関数は失敗し、対応する値を返します。


EINVAL

引数が無効です。


EFAULT

rwlp または arg が無効なアドレスを指しています。