2014-01-29 31 views
0

ZeroMQ在Windows上使用select()是令人難以置信的,直到我完成我的代碼並開始性能測試後才知道。他們應該在他們的網站上用大紅色字體顯示這些信息。替換窗口上的ZeroMQ的select()

無論如何取代ZeroMQ的select()?

IOCP是前向模型,不能很容易地集成到它中,WSAEventSelect如何,這也是一個反應堆模型,並且具有接近輪詢的性能。

我的另一種選擇是http://nanomsg.org/,但它仍然是alpha。

回答

0

Zeromq的主要目標之一是爲線程,進程,節點和集羣之間的通信提供一致的API。特定於協議的優化不在此範圍之內,因爲它可能會影響其他通信領域。例如,共享內存將是IPC的一種更好的形式,但UNIX域套接字使得一致的API更容易。知道端點何時斷開也很好,但是如何在線程之間實現這種行爲?

他們的主要目標是允許每種模式以相同的方式工作,無論拓撲結構,協議,系統或語言如何,無論它看起來有多奇怪都可以使用任何混合物(node.js Websockets communication用C#代理將消息傳遞給與Java線程共享工作的Ruby和PHP工作人員等)

如果爲每個特定的協議和系統進行了優化,它的每個功能都會大大增強,但這也會使統一模式接近不可能。

順便說一句,如果你能找到一種方法來實現iocp,同時仍然保持這種多功能性和中立性,他們可能會接受一條條約。

PPS,nanomsg由Zeromq的主要原始開發者之一製造。 Crossroads.IO是Zeromq的原始Zeromq開發人員的直接分支,也包括一些nanomsg的開發人員。如果我沒有弄錯,納米可能會在完成時成爲十字路口的核心。