【问题标题】:erlang inter-process lock mechanism (such as flock)erlang进程间锁机制(如flock)
【发布时间】:2013-05-20 15:15:16
【问题描述】:

Erlang 是否有进程间(我是指 Linux 或 Windows 进程)锁定机制,例如flock?

用法如下:

  • Erlang 服务器开始为存储库提供服务,并设置文件锁(或其他)
  • 如果另一个 OS 进程(另一个 Erlang 服务器或命令行 Erlang 脚本)与 repo 交互,则文件锁定会警告可能的冲突

【问题讨论】:

    标签: erlang flock interprocess


    【解决方案1】:

    如果你的意思是在 Erlang 进程之间,不,它具有进程间锁定机制。这不是 Erlang 控制对共享资源的访问的方式。一般来说,如果你想控制对资源的访问,你有一个管理资源的 Erlang 进程,并且对资源的所有访问都通过这个进程。这意味着我们不需要进程间锁或互斥锁来控制访问。这也是安全的,因为您不能“作弊”和访问,并且管理过程可以检测客户是否在交易中间死亡。

    【讨论】:

    • 我的意思是操作系统进程。我将更新我的问题并添加此详细信息。
    【解决方案2】:

    在 Erlang 中,您可能会使用不同的方法来解决这个问题。想到的一件事是保留一个处理所有存储库的 Erlang node()。它有一个lock_mgr 进程来管理资源锁。

    当另一个节点或escript要运行时,它可以通过分发连接到正在运行的Erlang节点并请求锁定。

    【讨论】:

      【解决方案3】:

      有模块global 可以满足您的需求。

      global:set_lock/1,2,3

      在 LockRequesterId 的 ResourceId 上对指定节点(如果未指定,则在所有节点上)设置锁定。

      【讨论】:

        猜你喜欢
        • 2012-02-24
        • 1970-01-01
        • 2015-01-09
        • 2017-10-19
        • 2023-03-15
        • 2014-05-12
        • 2015-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多