2012-12-17 20 views

回答

3

那麼在Linux中沒有簡單的API,那麼WaitForMultipleObjects()等效。

This QnA包含第一部分的答案,也許還有更好的解釋。

對於WSAEnumNetworkEvents(),在Linux中,根據您的要求使用poll()select()。另一個應用libevent也可能有用。

參考:

  • 人-3民意調查

  • 人-3選擇

  • libevent

+0

感謝您的快速回復,如果select()用於這個,那麼我們應該使用什麼WSAEventSelect()?或者我們應該使用選擇WSAEventSelect()和輪詢WSAEnumNetworkEvents()? – ABC

+0

如果我沒有錯,select()用於爲讀/寫/關閉網絡事件註冊新套接字,poll()如您所建議用於檢查發生哪個網絡事件(讀/寫/關閉)。 。? – ABC

+0

[此鏈接](http://www.unixguide.net/network/socketfaq/2.14.shtml)將更好地回答您的問題。 :) – askmish

3

對於開發人員從Windows背景的,我們面臨的將一些代碼從Win32移植到pthrea時遇到同樣的問題ds and created an open source (MIT-licensed) library調用了pevents,它在Linux上實現了WaitForMultipleObjects(),同時支持自動和手動重置事件。它的行爲應與Windows上的WIN32事件相同。

+1

甜 - 我一直在努力實施很長一段時間。 – erict

+0

不通過輪詢實現等待嗎?如果是這樣,它的函數不等同於通過阻塞執行等待的'WaitForMultipleObject()'API。 (並沒有消耗CPU時間。) – mg30rg

+0

@ mg30rg我不知道你爲什麼會這麼說/假設。 pevents完全是異步和事件驅動的,使用本地posix同步原語來複制Windows的行爲。這是最肯定的*不是*輪詢解決方案。 –

相關問題