Elixir/Erlang 并发状态访问
Elixir/Erlang concurrent state access
如何从 erlang 或 elixir 中的一堆进程组织并行访问数据(例如 ETS table)?
在传统模型中,我会创建 RWLock
并使关键部分尽可能小。因此,我至少可以通过并行读取访问 hash-table 。
在 erlang 中,第一个想法是在状态中存储 table 的实现 gen_server
。但是所有访问都将被序列化。如何处理才能更快地服务?
使用直接访问 :ets
and specify read_concurrency: true
in call to :ets.new/2
。
GenServer
在这里是多余的link,可能成为瓶颈。
如何从 erlang 或 elixir 中的一堆进程组织并行访问数据(例如 ETS table)?
在传统模型中,我会创建 RWLock
并使关键部分尽可能小。因此,我至少可以通过并行读取访问 hash-table 。
在 erlang 中,第一个想法是在状态中存储 table 的实现 gen_server
。但是所有访问都将被序列化。如何处理才能更快地服务?
使用直接访问 :ets
and specify read_concurrency: true
in call to :ets.new/2
。
GenServer
在这里是多余的link,可能成为瓶颈。