我们有一个.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
关于.net - .NET如何利用IO线程或IO完成端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/539940/