Dot-Net

.NET 如何使用 IO 執行緒或 IO 完成埠?

  • February 12, 2009

我們有一個 .NET 應用程序,它對各種 Web 服務進行多次並發呼叫,收集它們的響應,然後對這些響應進行一些計算。為了獲得額外的性能,我一直在研究通過使用 IO 完成埠來使用 .NET 的 IO 執行緒的方法的使用。我已經閱讀了幾個資源,包括 Joe Duffy 最近的《Windows 上的並發程式》一書,雖然我“了解”了它們的用處,但我對它們在 .NET 中的行為有點不清楚,我正在尋找一個簡明的解釋。

如果您已經在使用非同步方法,您可能不必做任何事情。根據您用於呼叫 Web 服務的技術,最終,它將下拉到 Win32 API 以進行呼叫以從網路獲取字節,為此,它將使用 I/O 完成用於處理非同步呼叫的埠。

I/O 完成埠背後的基本前提是,在等待 I/O 操作時,有一個執行緒池一直在等待 I/O 操作完成(假設您註冊使用 I/O 完成埠)。當您註冊的操作完成時,來自 I/O 完成埠執行緒池的執行緒用於處理回調。

當然,在呼叫 I/O 完成埠之後,你的執行緒可以繼續做更多的工作,或者終止,你可以選擇。

以下內容應該有助於更多地描述它:

I/O 完成埠:

<http://msdn.microsoft.com/en-us/library/aa365198(VS.85).aspx>

內部 I/O 完成埠(WayBack 機器):

<https://web.archive.org/web/20101101112358/http://doc.sch130.nsc.ru/www.sysinternals.com/ntw2k/info/comport.shtml>

引用自:https://stackoverflow.com/questions/539940