【问题标题】:How does erlang access shared resource?erlang如何访问共享资源?
【发布时间】:2010-12-27 15:01:15
【问题描述】:

我是 erlang 的新手,而 erlang 是面向并发的编程,它没有可变的数据结构,这就是它易于并行化的原因。

但无论如何,共享资源仍然存在,例如写入同一个文件。那么,erlang如何同步访问两个进程之间的共享资源呢?

【问题讨论】:

    标签: erlang


    【解决方案1】:

    通常你可以做的是让一个进程负责访问共享资源。其他进程将向单个管理器进程发送消息,请求读取或写入共享资源的信息。

    一些共享资源(例如,某些类型的 ETS 表)可以被多个进程读取,但只有一个进程可以写入。因此,您可以设置一个进程来序列化对表的写入,但让任何人从中读取。

    【讨论】:

    • 另外,根据我的经验,负责序列化请求的过程通常实现为通用服务器(gen_server):erlang.org/doc/man/gen_server.html
    • 一个 ETS 表可以有多个写入者。它有一个桶锁定方案 IIRC,所以它相当快,除非不同的进程写入操作发生冲突。元组空间是 ETS 的一个很好的类比。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2015-06-07
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2011-08-17
    • 2011-03-10
    • 2014-11-28
    相关资源
    最近更新 更多