gpt4 book ai didi

c# - 任务等待与 Task.WaitAll

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

就并行性而言,这些是等价的吗?

async Task TestMethod1()
{
Task<int> t1 = GetInt1();
Task<int> t2 = GetInt2();
await Task.WhenAll(t1, t2);
}

async Task TestMethod2()
{
Task<int> t1 = GetInt1();
await GetInt2();
await t1;
}

TestMethod2中,我主要想了解GetInt1()是否在等待GetInt2()时开始执行。

最佳答案

是的,就“并行性”(实际上并发性)而言,它们几乎相同。

特别是 TAP docs状态返回的任务是“热的”,即:

All tasks that are returned from TAP methods must be activated... Consumers of a TAP method may safely assume that the returned task is active

因此,您的代码通过调用它们的方法来启动异步操作。他们返回的任务已经在进行中。在这两个示例中,两个任务都同时运行。

使用两个 await 还是单个 await Task.WhenAll 都没有太大关系。我更喜欢 Task.WhenAll 方法,因为在我看来,它更清楚地传达了并发的意图。此外,它只中断源上下文(例如,UI 线程)一次而不是两次,但这只是一个小问题。

关于c# - 任务等待与 Task.WaitAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599168/

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