任务等待vs Task.WaitAll

提尔

就并行性而言,这些等效吗?

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文档指出返回的任务是“热”的,即:

从TAP方法返回的所有任务都必须被激活... TAP方法的使用者可以安全地假定返回的任务是活动的

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

使用2await或1并没有多大关系await Task.WhenAll我更喜欢这种Task.WhenAll方法,因为IMO更清楚地传达了并发的意图。另外,它仅中断一次而不是两次中断源上下文(例如,UI线程),但这只是一个小问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

任务等待vs Task.WaitAll

来自分类Dev

使用Task.WaitAll()处理等待的任务?

来自分类Dev

C#Task.WaitAll不在等待

来自分类Dev

Task.WaitAll没有在等待-解释

来自分类Dev

C#中的Task.WaitAll挂起了任务的执行

来自分类Dev

C#中的Task.WaitAll挂起了任务的执行

来自分类Dev

使用Task.Start触发任务时卡在Task.WaitAll(tasks.ToArray())

来自分类Dev

Task <TResult> .Result vs等待任务

来自分类Dev

Task.WaitAll()的默认超时

来自分类Dev

Task.WaitAll is not waiting - Explanation

来自分类Dev

处理Task.WaitAll中已取消的任务和任务异常?

来自分类Dev

延续任务上的Task.WaitAll()仅延迟原始任务的执行?

来自分类Dev

I / O绑定任务的Parallel.ForEach比Task.WaitAll快吗?

来自分类Dev

传递给 Task.WaitAll() 的任务会在不同的上下文中运行吗?

来自分类Dev

子任务与WaitAll

来自分类Dev

子任务与WaitAll

来自分类Dev

在WCF方法中使用Task.WaitAll

来自分类Dev

Task.WaitAll()无法正常工作

来自分类Dev

Task.WaitAll无限期阻止

来自分类Dev

为什么Task.WaitAll不等到我的所有任务都完成后才开始?C#

来自分类Dev

WaitAll之后再次触发任务

来自分类Dev

WaitAll用于更改列表<任务>

来自分类Dev

“ foreach with task.Wait”和Task.WaitAll之间的区别

来自分类Dev

“ foreach with task.Wait”和Task.WaitAll之间的区别

来自分类Dev

异步等待与TaskFactory.StartNew和WaitAll

来自分类Dev

Why does Task.WaitAll() not block or cause a deadlock here?

来自分类Dev

如果发生任何异常,如何使Task.WaitAll()中断?

来自分类Dev

C#Task.WaitAll()取消,进行错误处理

来自分类Dev

调用Wait()或WaitAll()时任务总是取消

Related 相关文章

热门标签

归档