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

mutex の初期化

mutex_init(3T)

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

int mutex_init(mutex_t *mp, int type, void *arg)); 

mutex_init() は、mp が指す相互排他ロック (mutex ロック) を初期化します。type には、次のいずれかを指定できます (arg は現在は無視されます)。

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

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

プロセス内スコープでの mutex

#include <thread.h>

mutex_t mp;
int ret;

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

プロセス間スコープでの mutex

#include <thread.h>

mutex_t mp;
int ret;

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