gpt4 book ai didi

c# - BeginReceive 回调中的异步/等待

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:40 26 4
gpt4 key购买 nike

据说 BeginReceiveBeginSend 回调不会在 .Net ThreadPool 上执行,而是在 上执行IOCP 线程池。对于高性能服务器,IOCP 线程尽快返回池至关重要,这意味着 BeginReceiveBeginSend 的回调中没有繁重的工作。如果我调用异步方法并在回调中等待它会怎样?这是否意味着 IOCP 线程将返回到线程池,并且当异步操作完成时回调方法将在另一个可用的 IOCP 线程上继续?

最佳答案

据我所知,不能保证这些回调会在 IOCP 线程上执行。

如果您使回调异步并使用await,则回调线程将返回到线程池(无论是 IOCP 线程还是常规线程池线程)。稍后,当异步方法恢复时,它将在常规线程池线程上恢复,而不是 IOCP 线程(据我所知,这没有记录但很有意义)。

但是,我无法想象您实际想要执行此操作的用例。如果你 wrapped BeginReceive/EndReceive and BeginSend/EndSend within a task-based API,代码会更清晰并在整个过程中使用了 async/await

关于c# - BeginReceive 回调中的异步/等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28749340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com