在Linux上使用mkdir作为基于文件的锁定是一种好习惯吗?

我想在linux上的perl程序中快速实现某种锁定,这可以在不同的进程之间共享.

所以我使用mkdir作为原子操作,如果目录不存在则返回1,如果存在则返回0.我在关键部分后立即删除目录.

现在,有人向我指出,这不是一般的好习惯(独立于语言).我认为这很好,但我想问你的意见.

编辑:
举一个例子,我的代码看起来像这样:

while (!mkdir "lock_dir") {wait some time}
critical section
rmdir "lock_dir"

解决方法:

恕我直言这是一个非常糟糕的做法.如果在关键部分创建锁目录的perl脚本以某种方式被杀死怎么办?等待锁定目录被删除的另一个perl脚本将永远等待,因为它不会被最初创建它的脚本删除.
要使用安全锁定,请在锁定文件上使用flock()(请参阅perldoc -f flock).

上一篇:c#-确保对字典中值列表的线程安全操作


下一篇:保护PHP中的“包含污染”变量