在erlang中,是否可以让另一个进程拥有数据的并发读取器?

在erlang中,是否可以让另一个进程拥有数据的并发读取器?,erlang,Erlang,我对消息传递系统的理解是,它是序列化的,因此,即使数据没有改变,来自不同进程的所有读取都是序列化的。如果可能的话,我希望同时读取数据,以利用分布式计算。这可能吗?您是正确的,消息将在接收过程中按顺序处理 如果数据真的是静态的(即使有时发生变化),也可以考虑使用这种情况。ETS表经过高度优化,可随时进行并发访问。除非有人正在向ETS表(或行)写入数据,否则所有客户端都可以同时从表中读取数据。如果在同一台计算机上有不同的进程(IMO,这不是分布式计算),二进制类型不会序列化,而是通过引用传递。因此,

我对消息传递系统的理解是,它是序列化的,因此,即使数据没有改变,来自不同进程的所有读取都是序列化的。如果可能的话,我希望同时读取数据,以利用分布式计算。这可能吗?

您是正确的,消息将在接收过程中按顺序处理


如果数据真的是静态的(即使有时发生变化),也可以考虑使用这种情况。ETS表经过高度优化,可随时进行并发访问。除非有人正在向ETS表(或行)写入数据,否则所有客户端都可以同时从表中读取数据。

如果在同一台计算机上有不同的进程(IMO,这不是分布式计算),二进制类型不会序列化,而是通过引用传递。因此,您可以通过许多进程读取大块数据,而无需实际复制它。在一个真正分布式的世界中,“并发读取数据”的想法在我看来并不正确(ETS也不例外)


顺便说一句,我在上一句话中的意思是“它不会让你免于序列化”。

我想知道为什么读取需要是串行的。我不熟悉Erlang和并发计算。请澄清你说的“读取需要是串行的”是什么意思。什么样的读取?按顺序而不是并发。泽维尔,我也不知道你说的“按顺序”是什么意思。如果您没有启用SMP,那么不管怎样,一次只能有一个进程可以做任何事情。也就是说,在单个节点中。对于多个节点,这是另一回事。我把serial理解为读取是按照接收顺序执行的。然而,在一个有多台计算机的分布式系统中。我想其中一些阅读可以同时进行。我有一个相当长的答案,然后我意识到我根本不知道你的意思。也许你可以用一个更具体的例子来重新解释你的问题,这样人们就可以就如何增加并行访问给出一些建议。我必须同意你的看法,我也不明白你的意思。