在erlang中,是否可以同时拥有另一个进程拥有的数据?

时间:2011-06-27 12:35:32

标签: erlang

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

2 个答案:

答案 0 :(得分:6)

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

如果数据确实是静态的(即使它有时会发生变化),请考虑使用ETS table来表示这种情况。 ETS表针对并发访问进行了高度优化,只要适用。除非有人写入ETS表(或行),否则所有客户端都可以从表中同时读取数据。

答案 1 :(得分:1)

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

P.S。好吧,我在上一个陈述中的意思是“它不会让你免于序列化”。