gpt4 book ai didi

c# - 异步调用是需要在当前进程中多出一个线程还是使用线程池中的另一个线程?

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:38 32 4
gpt4 key购买 nike

我指的是 this在它说不需要的地方回答,但几乎没有具体的假设。这个问题很笼统。

  • 我正在使用 C#
  • 异步进程只是调用外部 API 并等待回复。

最佳答案

一般来说是的,但我至少能想到一个异常(exception)。要启动异步操作,您必须将操作转移到调用方上下文之外。我的意思是调用者不应该阻塞等待操作完成。 通常意味着操作必须移动到新创建的线程、ThreadPool 中的线程、IO 完成端口、另一个进程等。

我说过我想到了一个异常(exception)。如果我们稍微歪曲我们对异步的定义,我们可以允许发起者不阻塞等待操作完成而实际上没有将操作移动到另一个线程的场景。最好的例子是 UI 消息泵。在 .NET 中,很容易从 UI 线程本身调用 Control.BeginInvoke 以在同一线程上发布委托(delegate)的执行。发起者显然不会阻塞等待委托(delegate)完成,但委托(delegate)最终会在同一线程上开始执行。这绝对是对我们通常认为的异步术语的歪曲,因为在这种情况下,操作会阻塞,直到调用者完成,而不是相反。

关于c# - 异步调用是需要在当前进程中多出一个线程还是使用线程池中的另一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734029/

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