【发布时间】:2017-08-30 04:21:27
【问题描述】:
我想使用 System V 信号量实现一些 POSIX 信号量 API,并发现此博客 Implement POSIX Semaphore APIs using System V Semaphores APIs 很有用。
我使用semget(System V) 来实现sem_open(POSIX)。如下:
sem_t *sem_open(const char *name, int oflag, ...) {
creat(fname, 0444);
key_t key = ftok(name, 1);
semget(key, 1, IPC_CREAT)
}
但是semget 返回 信号量集 标识符,而 sem_open 返回一个新的 POSIX 信号量。允许的信号量集的数量非常少,所以我不能创建很多信号量。我怎样才能摆脱它。
【问题讨论】:
-
有没有简单的方法让
semget调用返回单个信号量而不是信号量集?