gpt4 book ai didi

C# 异步等待和线程池

转载 作者:太空狗 更新时间:2023-10-30 00:40:43 24 4
gpt4 key购买 nike

我了解到,当在 UI 线程上调用的方法上使用 async 和 await 时,UI 线程可以在等待某些 IO 完成的同时释放出来做其他工作。如果我在线程池线程调用的方法上使用异步等待,该线程池线程会发生什么当 IO 完成时?它是否返回到池中?在后一种情况下,当 IO 完成时哪个线程完成该方法?

最佳答案

在这种情况下,继续在任何可用的线程池线程上执行。

理论上,由可等待对象来适本地安排延续,但通常当异步方法传入延续时,等待对象会捕获当前的 SynchronizationContext,并使用该同步上下文来安排延续等待已经完成。 (模块 ConfigureAwait 调用等)

在线程池的情况下, 没有同步上下文,因此仅在任何线程池线程上安排延续。 (控制台应用程序的主线程或基本上任何未设置同步上下文的线程也是如此。)

关于C# 异步等待和线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24985208/

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