gpt4 book ai didi

c# - 并行运行时任务变慢

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

我很难理解这段代码的原因:

// Example #1
foreach (var task in tasks)
{
task.Start();
task.Wait();
}

运行速度远远快于:

// Example #2
foreach (var task in tasks)
{
task.Start();
}

foreach (var task in tasks)
{
task.Wait();
}

虽然示例 #1 在 1-2 秒内执行所有任务,但示例 #2 执行时间接近 20 秒。变量 tasks 的类型为 Task[]

数组中有十几个任务,每个任务执行时间为500-1000ms。没有 CPU 限制,因为任务只是向服务器发送 HTTP 请求。

enter image description here enter image description here

这对我来说没有任何意义。

最佳答案

我用@StephenCleary 帮助程序库解决了我的问题: https://github.com/StephenCleary/AsyncEx

AsyncContext.Run(async () =>
{
foreach (var task in tasks) task.Start();
await Task.WhenAll(tasks);
});

现在它的运行速度与 #1 示例一样快,但也能在所有请求完成之前正确等待。

关于c# - 并行运行时任务变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33766537/

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