作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想在 linux 上的 perl 程序中快速实现某种锁定,这将在不同进程之间共享。
所以我使用 mkdir
作为原子操作,如果目录不存在则返回 1
,如果存在则返回 0
。我在关键部分之后删除了目录。
现在,有人向我指出,这通常不是一个好的做法(独立于语言)。我觉得还行,不过想问一下大家的意见。
编辑:举个例子,我的代码看起来像这样:
while (!mkdir "lock_dir") {wait some time}
critical section
rmdir "lock_dir"
最佳答案
恕我直言,这是一个非常糟糕的做法。如果创建锁定目录的 perl 脚本在临界区期间以某种方式被杀死怎么办?另一个等待锁定目录被删除的 perl 脚本将永远等待,因为它不会被最初创建它的脚本删除。要使用安全锁定,请在锁定文件上使用 flock()(请参阅 perldoc -f flock)。
关于linux - 在 Linux 上使用 mkdir 作为基于文件的锁定是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7208447/
在我生活的世界中,构建一个将所有飞镖都扔到墙上的解决方案,并希望其中一些能命中靶心是一种非常糟糕的解决方案方法。 那么,我的问题出现了,什么时候在约定可接受的生产系统中使用 INSERT IGNORE
在数据处理时,经常会因为index报错而发愁。不要紧,本次来和大家聊聊pandas中处理索引的几种常用方法。 1.读取时指定索引列 很多情况下,我们的数据源是 CSV 文件。假设
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
我是一名优秀的程序员,十分优秀!