2011-11-06 55 views
0

我似乎無法在任何地方找到明確的答案。WCF:在IOCP線程上執行的單向回調方法?

在客戶端,如果我正在編寫處理來自服務器的回調方法的代碼,這是在IOCP線程上執行的嗎?如果是的話,我希望我們應該保持回調方法的高效和快速。如果需要進行阻塞調用,那麼將該回調響應排隊到一個線程池是有意義的。

有人可以確認/否認我的假設。

謝謝。

回答

0

如果您在服務器中使用IO完成端口(例如,可能在需要模擬1000個客戶端的服務器測試系統上),則您負責提升用戶空間線程池以等待完成港口。該池可以足夠大以允許許多客戶端&,這樣可以避免排隊到另一個線程池的第二階段。

如果使用重疊的IO完成回調,則回調由發出ReadFileEx的相同線程執行(假設您的線程正確等待可警告等待(blahEx調用),允許APC回調)。如果這個線程正在處理多個客戶端,那麼是的,這個線程可能會很忙,你應該將緩衝區/套接字/上下文/任何東西排到一個線程池,以便處理緩衝區併發出任何回覆。

0

據我瞭解,是的,它是在一個IOCP。我認爲,由於服務器本身處於IOCP的中間(因爲它調用了回調函數),並且由於客戶端處於IOCP的中間,所以最好儘快離開。

我處於同一問題的中間,我認爲主要回調被用作「事件」,並且通常被卸載到UI線程或不同的工作Q.