gpt4 book ai didi

c# - 异步调用一个方法然后等待它,有好处吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:16:25 25 4
gpt4 key购买 nike

我正在查看一些执行以下操作的代码:

Task<SomeType> t1 = 
Task.Factory.StartNew(() => Service.GetSomething(readQuery, contextId));
Task.WaitAll(t1);

只执行一个异步任务然后等待它有好处吗?执行时间将是相同的(如果不是因为异步会增加一些开销而更多),但可能是处理器级别的东西?

我只是想弄清楚这段代码是否是不必要的(我认为是),以及我是否可以将其更改为一个简单的调用,感谢您的想法。

最佳答案

Is there a benefit doing just one async task and then wait for it? Execution time will be the same (if not more due to some overhead that async will add), but maybe something at the processor level?

通常,没有任何好处(并且涉及额外的开销),除非您在开始任务和阻塞等待之间执行其他工作。

在某些情况下,可能会有好处,但只有在您安排 Task 时才会如此。具有特定的 TaskScheduler它以特定方式卸载工作(即:将任务推送到 UI 线程)。

此外 - 通常,如果等待单个任务,而不是使用 Task.WaitAll , 你可以调用 Wait() (或获取 Task<T>Result ):

// Just block until it's done
t1.Wait();

// OR:

// Block then get the result
SomeType result = t1.Result;

Task.WaitAll()仅当您正在等待多个任务时才是真正合适的。

关于c# - 异步调用一个方法然后等待它,有好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16362612/

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