在Bash中创建互斥锁时,我应该使用`flock`还是`mkdir`?

时间:2016-06-22 12:54:03

标签: bash shell mutex semaphore lockfile

我搜索了Bash如何创建互斥锁。我遇到了两种不同的方法来在Bash中创建互斥锁。两者都是stackoverflow答案,并且都有> 100 upvotes:one answer uses mkdirthe other answer uses flock

在创建互斥锁时使用bash,我应该使用flock还是mkdir

1 个答案:

答案 0 :(得分:2)

阅读这两个答案后,似乎两个答案都提供了创建互斥锁的解决方案,但在某些情况下您需要使用flock,有些情况需要使用mkdir

  • 如果您需要已经强大/经过测试的功能,例如超时,阻止等等 - >使用flock
    • 内置超时
    • 内置支持阻止或非阻止
    • 内置支持在使用后删除互斥锁
  • 如果您的发行版没有flock - >您被迫使用mkdir
    • 如果您需要flock提供的任何超时或其他功能,则必须重新发明轮子
    • 使用mkdir创建互斥锁意味着您的代码不会立即传达目的 - >而使用flock意味着你的代码说自己说#34;这段代码正在实现同步"
    • 大多数人都不熟悉mkdir是创建互斥锁的有效解决方案,因此以这种方式使用mkdir可能会让您的代码有更多的代码味道(特别是如果您的发行版有flock可用,您选择不使用它)