我想在 Linux 上的 perl 程序中快速实现某种锁定,它可以在不同进程之间共享。
所以我用了mkdir
作为原子操作,它返回1
如果该目录不存在并且0
如果是的话。我删除了关键部分之后的目录。
现在,有人向我指出,这通常不是一个好的做法(独立于语言)。我觉得还可以,不过想问问你的意见。
编辑:
举个例子,我的代码看起来像这样:
while (!mkdir "lock_dir") {wait some time}
critical section
rmdir "lock_dir"
恕我直言,这是一个非常糟糕的做法。如果创建锁定目录的 perl 脚本在关键部分以某种方式被杀死怎么办?另一个等待锁定目录被删除的 Perl 脚本将永远等待,因为它不会被最初创建它的脚本删除。
要使用安全锁定,请在锁定文件上使用flock()(请参阅perldoc -fflock)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)