4

我搜索了 Bash 如何创建互斥锁。我遇到了两种在 Bash 中创建互斥锁的不同方法。两者都是 stackoverflow 答案,并且都有 >100 的赞成票:一个答案使用mkdir另一个答案使用flock.

在 bash 中创建互斥锁时,我应该使用flockormkdir吗?

4

1 回答 1

5

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

  • 如果您需要已经强大/经过测试的功能,例如超时、阻塞等 -> 使用flock
    • 内置超时
    • 对阻塞或非阻塞的内置支持
    • 使用后删除互斥锁的内置支持
  • 如果你的发行版没有flock--> 你被迫使用mkdir
    • 如果您需要任何超时或其他功能,flock则必须重新发明轮子
    • usingmkdir用于创建互斥锁意味着您的代码不会立即传达目的-> 而 usingflock意味着您的代码不言自明地说“此代码正在实现同步”
    • 大多数人不熟悉mkdir创建互斥锁的有效解决方案,因此mkdir以这种方式使用可能会使您的代码有更多的代码气味(特别是如果您的发行版flock可用并且您选择不使用它)
于 2016-06-22T12:54:03.303 回答