PHP的sem_acquire() - “等待”进程以什么顺序执行

时间:2015-03-25 15:15:24

标签: php semaphore sysv-ipc

因此PHP中的信号量非常便于同步作业/任务(过程,更准确)。

假设1进程获得对信号量的访问权并开始执行其操作(=工作)。其他3个进程正在触发 sem_acquire()以获得访问权限。它们都被阻塞,等待信号量自由并分配给每个信号量。

问题:3个别流程将按什么顺序执行?常见的逻辑说他们会先执行(并被阻止),先服务(释放到工作),但我没有在官方文档中看到这种说法。

任何人都可以确认或纠正我吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

我写了一个脚本来演示,是的,它们是按照先到先得的原则提供的。这对我的应用至关重要。

您也可以演示它-创建以下thread.php,然后使用this shell script进行调用。

答案 1 :(得分:0)

PHP sem_acquire()函数调用semop()系统调用,该调用似乎无法保证等待进程将在何时获取信号量。