c#:是否有任何理由支持异步套接字调用而不是我自己的线程池中的同步调用?
与调用 BeginGetResponse 相比,调用 BeginGetResponse 是否有任何性能优势? 在我自己的线程池中调用 GetResponse?自有泳池的优势 是我可以控制请求队列。
谢谢!
Is there any performance advantage in calling BeginGetResponse vs.
calling GetResponse in my own thread pool? The advantage of my own pool
is that I can control the queue of requests.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您调用 GetResponse 时,即使您在后台 ThreadPool 线程上调用它,该线程仍然会被阻塞,并且无法去做其他工作。这意味着上下文切换等。但是,如果您使用 BeginGetResponse,那么它将把工作卸载到网卡上,但是最重要的是,调用线程现在可以自由地执行一些其他工作。当网卡完成后,它会通知您的应用程序,此时回调将被调用。
When you call GetResponse, even if you call it on a background ThreadPool thread, THAT thread will still be blocked, and won't be able to go and do other work. That means context switching etc. If however you use the BeginGetResponse, then it offloads the work to the network card, however and most importantly, the calling thread is now free to go about and do some other work. When the network card is done, it'll notify your application, at which point the callback will get called.