2011-06-27 43 views
-1

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

+1

我有一个相当长的答案,然后我意识到我根本不知道你的意思。也许你可以用一个更具体的例子来重构你的问题,这样人们可以就如何增加并行访问给出一些建议。 –

+0

我必须在这里同意,我也不明白你的意思。 – rvirding

回答

6

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

如果数据真的是静态的(当然,即使它有时会发生变化),请考虑使用ETS table来处理这种情况。 ETS表格经过高度优化,适用于并发访问。除非有人正在写入ETS表(或行),所有客户端都可以从表中同时读取数据。

1

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

P.S.那么,我在最后一句话中的意思是“它不能让你免于序列化”。

+0

我很想知道为什么读取需要串行。我是Erlang和并发计算的新手。 – Xavier

+0

请澄清当你说“读取需要串行”时你的意思。什么样的读取? –

+0

按顺序而不是并发。 – Xavier

相关问题