【发布时间】:2017-04-22 06:15:47
【问题描述】:
不是特定的代码问题,而是一般的编码问题。我正在尝试在工作项目中使用信号量来限制可以同时访问某些进程的用户数量。
据我了解如下:
$iKey = ftock($sSomeFileLocation,'sOneCharacterString'); //Generate the key
if($sem_id = sem_get($iKey)){ //1 user allowed
if(sem_acquire($sem_id)){
//Do the limited process here
sem_release($sem_id);
}
}
我在这里看到的问题是,如果已经有一个用户拥有信号量键,那么下一个用户只会等到第一个用户完成,而不是仅仅出错。任何人都知道如果达到 max_acquire 数字,sem_acquire(或类似的)将返回 false 的方法吗?
谢谢
【问题讨论】: