【发布时间】:2018-01-19 18:08:21
【问题描述】:
我正在研究将信号量用作经典计数器。它的起始值为 5,可以下降到 0,但不能超过 5。
sem_t sem;
sem_init(&sem, 0, 5);
// ...
sem_wait(&sem); // goes down to 4
//...
sem_post(&sem); // goes up to 5
sem_post(&sem); // goes up to 6 ?!
我想到了文档,但我没有看到任何类似 sem_post 的函数可以做到这一点。现在,我知道这种行为可以用 mutex 和 int 来实现,但是如果可以用这种方式完成类似的事情(代码少一点),我有点感兴趣。
【问题讨论】: