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

sema_init の構文

#include <thread.h>

int sema_init(sema_t *sp, unsigned int count, int type,
    void *arg);

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

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

プロセス内スコープでのセマフォー

#include <thread.h>

sema_t sp;
int ret;
int count;
count = 4;

/* to be used within this process only */
ret = sema_init(&sp, count, USYNC_THREAD, 0); 

プロセス間スコープでのセマフォー

#include <thread.h>

sema_t sp;
int ret;
int count;
count = 4;

/* to be used among all the processes */
ret = sema_init (&sp, count, USYNC_PROCESS, 0);