2011-06-27 47 views
-1

我對消息傳遞系統的理解是,它是序列化的,因此即使數據沒有變化,來自不同進程的所有讀取也會被序列化。如果可能的話,我希望同時讀取數據以利用分佈式計算。這可能嗎?在erlang中是否有可能同時擁有另一個進程擁有的數據讀取器?

+1

我有一個相當長的答案,然後我意識到我根本不知道你的意思。也許你可以用一個更具體的例子來重構你的問題,這樣人們可以就如何增加並行訪問給出一些建議。 –

+0

我必須在這裏同意,我也不明白你的意思。 – rvirding

回答

6

你是正確的,消息將在接收它們的過程中按順序處理。

如果數據真的是靜態的(當然,即使它有時會發生變化),請考慮使用ETS table來處理這種情況。 ETS表格經過高度優化,適用於併發訪問。除非有人正在寫入ETS表(或行),所有客戶端都可以從表中同時讀取數據。

1

如果您在同一臺計算機上有不同的進程(IMO,這不是計算的分佈式),則二進制類型不會被序列化,而是通過引用傳遞。因此,您可以通過許多進程讀取大塊數據,而無需實際複製它。在一個真正的分佈式世界中,「同時讀取數據」的想法對我來說並不合適(ETS並不例外)。

P.S.那麼,我在最後一句話中的意思是「它不能讓你免於序列化」。

+0

我很想知道爲什麼讀取需要串行。我是Erlang和併發計算的新手。 – Xavier

+0

請澄清當你說「讀取需要串行」時你的意思。什麼樣的讀取? –

+0

按順序而不是併發。 – Xavier

相關問題