gpt4 book ai didi

c# - Task.WhenAll 是否在后台线程中并行运行任务

转载 作者:行者123 更新时间:2023-11-30 17:40:48 25 4
gpt4 key购买 nike

下面2个代码片段做的一样吗?

//--------------------------------------------------
1.
//--------------------------------------------------

var producer = Task.Run(async () =>
{
await bar.ReadDataAsync();
});

var consumer = Task.Run(async () =>
{
await bar.WriteDataAsync();
});


await Task.WhenAll(consumer, producer);

//--------------------------------------------------
2.
//--------------------------------------------------

await Task.WhenAll(bar.ReadDataAsync(), bar.WriteDataAsync());

最佳答案

Task.WhenAll 不运行任务。此方法不启动任何任务。

Task.WhenAll 所做的 是返回一个新的 Task,它只在 所有 原始任务完成时返回已经完成。

来自msdn

Task.WhenAll Method

.NET Framework 4.6 and 4.5

Creates a task that will complete when all of the supplied tasks have completed.

https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.whenall%28v=vs.110%29.aspx

在您的示例中,您调用了 Task.Run。这是一个您希望异步运行工作单元的请求。但是,不能保证线程亲和性。两个工作单元可以同步运行 - 这取决于默认的 TaskScheduler 来决定。

关于c# - Task.WhenAll 是否在后台线程中并行运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891586/

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