【问题标题】:Will Task.WhenAll perform tasks simultaneously if possible?如果可能,Task.WhenAll 会同时执行任务吗?
【发布时间】:2018-12-28 20:29:55
【问题描述】:

我的意思是,如果我有两个任务 async Task<Data1> GetData1Async()async Task<Data2> GetData2Async() 并以这种方式做某事:

var getTask1 = GetData1Async();
var getTask2 = GetData2Async();

await Task.WhenAll(getTask1, getTask2);

var result1 = getTask1.Result;
var result2 = getTask2.Result;

GetData1AsyncGetData2Async 是否有机会并行工作?

【问题讨论】:

  • 它们将同时运行。 “并行工作”是什么意思?
  • 它们将并行工作,如果您的意思是它们将同时/同时/同时运行。
  • 是什么让您认为现在没有发生?

标签: c# async-await task-parallel-library


【解决方案1】:

Task.WhenAll 只是等待这两个任务,不运行它们。

如果GetDataXAsync 这两个方法是真正异步的,并且在调用Task.WhenAll 时它们还没有完成,那么是的,它们将并行执行。

【讨论】:

  • 我理解正确吗,执行GetData1Async() 执行呼叫,然后下一个GetData2Async() 将在此之后立即呼叫,而无需等待GetData1Async() 完成,然后Task.WhenAll 只是等待他们全部完成他们的并行工作?
  • @TrolltheLegacy 是的
猜你喜欢
  • 2015-02-02
  • 1970-01-01
  • 2017-06-16
  • 2018-04-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
相关资源
最近更新 更多