我们有一个.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 Machine):
https://web.archive.org/web/20101101112358/http://doc.sch130.nsc.ru/www.sysinternals.com/ntw2k/info/comport.shtml