gpt4 book ai didi

c# - 异步方法是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 03:04:07 26 4
gpt4 key购买 nike

什么是异步方法。我想我知道,但我一直将它与并行性混淆。我不确定异步方法和并行性之间的区别是什么。

还有使用线程类和异步类的区别是什么?

编辑

一些演示异步、线程和并行之间区别的代码会很有用。

最佳答案

什么是异步方法?

当我们谈论可能冗长的操作时,就会讨论异步方法。通常我们需要完成这样的操作才能有意义地继续执行程序,但我们不想“暂停”直到操作完成(因为暂停可能意味着例如 UI 停止响应,这显然是不可取的)。

异步方法是我们调用以开始冗长操作的方法。该方法应该执行启动操作所需的操作并“非常快速”地返回,这样就没有处理延迟。

异步方法通常会返回一个 token ,调用者可以使用该 token 来查询操作是否已完成以及其结果是什么。在某些情况下,他们将回调(委托(delegate))作为参数;当操作完成时,回调被调用以通知调用者他们的结果已经准备好并将它们传回。 This是一种常用的回调签名,当然,通常回调可以看起来像任何东西。

那么究竟是谁在运行冗长的操作?

我在上面说过,异步方法会启动长度操作,但“启动”在这种情况下是什么意思?由于该方法立即返回,实际工作在哪里完成?

在一般情况下,执行线程需要监视进程。既然不是调用异步方法的线程暂停了,那么是谁呢?答案是,为此目的从 managed thread pool 中挑选了一个线程。 .

和线程有什么关系?

在这种情况下,我对“线程”的解释很简单,就是您显式启动自己的线程并委托(delegate)它同步 执行相关任务。该线程将阻塞一段时间,并且可能会在操作完成时向您的“主”线程(可以自由继续执行)发出信号。

这个指定的工作线程可能是 pulled out of the thread pool (注意:不建议在线程池线程中进行非常冗长的处理!)或者它可能是一个 you started只是为了这个目的。

关于c# - 异步方法是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16083613/

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