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

标签 bash shell mutex semaphore lockfile

我搜索了 Bash 如何创建互斥锁。我遇到了两种在 Bash 中创建互斥锁的不同方法。两者都是 stackoverflow 的答案,并且都有超过 100 个赞:one answer uses mkdir the other answer uses flock .

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

最佳答案

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

  • 如果您需要已经强大/经过测试的功能,如超时、阻塞等 --> 使用 flock
  • 内置超时
  • 对阻塞或非阻塞的内置支持
  • 内置支持在使用后删除互斥锁
  • 如果您的发行版没有 flock --> 你被迫使用mkdir
  • 如果您需要 flock 提供的任何超时或其他功能你必须重新发明轮子
  • 使用 mkdir用于创建互斥体意味着您的代码不会立即传达目的 --> 而使用 flock意味着您的代码不言自明地说“此代码正在实现同步”
  • 大多数人不熟悉 mkdir是创建互斥锁的有效解决方案,因此使用 mkdir这样可能会让你的代码有更多的代码味道(特别是如果你的发行版有 flock 可用,而你选择不使用它)
  • 关于bash - 在 Bash 中创建互斥锁时,我应该使用 `flock` 还是 `mkdir` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37968663/

    相关文章:

    bash - 将 erlang shell 作为守护进程/服务运行

    linux - 从字符串中提取文件路径

    string - 反斜杠字符的 Bash 参数扩展规则

    shell - 什么是反向shell?

    bash - 在bash中读取和解析文件及其参数

    c - Thread main with 2 sons thread循环x次产品和消费者

    multithreading - C/C++ 和其他语言中的条件变量使用模式

    c - 互斥锁和线程数

    perl - grep 变量并给出信息输出

    shell - 批量设置/p 不工作