2013-02-04 142 views
4

ZeroMQ指南提供了在進程多線程(inproc傳輸)中使用ZeroMQ的很好例子。但是,該示例顯示了一個平凡的消息有效載荷,它是一個字符串。因此,血清化和去血清化的成本很小。ZeroMQ和多線程

但是,以大型業務域對象爲例。這個域對象可以被用來表示它的XML表示。那麼,如果與每個線程進行通信意味着主線對象必須在一個線程中進行處理,發送到進程工作線程,並對消息有效負載進行操作,那麼ZeroMQ如何才能執行多線程。通過消息傳遞的性能收益是否會影響服務和消除服務的成本?

我明白這個構造的好處,因爲它有可能在未來跨cpu,跨節點,跨網絡等擴展。但是我對整個「使用ZeroMQ的多線程」概念感到困惑。

另一種方法可以是將域對象存儲在緩存中,並只將標識傳遞給工作線程,這將從緩存中獲取實際的域對象。這是什麼意圖?

任何用例或最佳實踐將受到歡迎。

+0

如果您使用ZMQ在線程之間進行通信,則可以使用inproc協議,並只是序列化要傳遞的消息(在堆上)的指針地址。 – gvd

回答

2

ØMQ擅長移動進程內外的數據,但不能將數據編組到二進制表示中。

不會因爲消息傳遞的性能提高而導致消毒和消除殺毒的成本嗎?

通過消息傳遞,您可以將同步過程變爲並行過程。關鍵好處不在於您可以傳輸消息的速度,而是您現在正在並行工作。