繁体   English   中英

羊群总是返回true

[英]flock always returns true

如果我叫这个脚本

<?php 
$file = 'file.txt';
$fp = fopen($file,'w');
if (flock($fp, LOCK_EX)) {
    echo "A";
}

if (flock($fp, LOCK_EX)) {
    echo "B";
}

我希望这个文件永远不会停止加载,因为第一个锁永远不会释放,脚本应该在第二个if语句中永远等待。 但是,脚本使我惊讶,结果如下:

AB

为什么第二flock真的?

flock在线程上下文中获取锁(有时甚至是整个过程)。 多次锁定相同的资源将“返回”相同的锁定。

这是预期的行为,否则您提供的样本将以死锁结束,您无法获取锁并继续,但是由于您已被锁定,因此无法释放已获取的锁。 您将不得不从外部终止进程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM