我使用来自 http://www.tuxradar.com/practicalphp/8/11/0的简单测试脚本, 就像这样
<?php
$fp = fopen("foo.txt", "w");
if (flock($fp, LOCK_EX)) {
print "Got lock!\n";
sleep(10);
flock($fp, LOCK_UN);
}
我打开了 5 个 shell 并一个接一个地执行脚本,脚本阻塞直到锁被释放,然后在释放后继续
我对 php 的东西不是很感兴趣,但我的问题是:有人知道获得 flock() 的顺序吗?
e.g.
t0: process 1 lock's
t1: process 2 try_lock < blocking
t2: process 3 try_lock < blocking
t3: process 1 releases lock
t4: ?? which process get's the lock?
是否有一个简单的确定性顺序,例如队列,或者内核“只是”通过“更高级的规则”选择一个?