【发布时间】:2019-02-26 12:44:36
【问题描述】:
我已经定义了这个块代码。谁能告诉我这段代码是异步还是并行? 这个块代码只是一个例子。它创建了四个线程,最后等待所有线程完成。
public Form1()
{
InitializeComponent();
var t1 = Task.Run(() =>
{
GetSum();
});
var t2 = Task.Run(() =>
{
GetSum();
});
var t3 = Task.Run(() =>
{
GetSum();
});
var t4 = Task.Run(() =>
{
GetSum();
});
Task.WaitAll(t1, t2, t3, t4);
}
private int GetSum()
{
int sum = 0;
for (int i = 0; i < int.MaxValue; i++)
{
sum += i;
}
return sum;
}
【问题讨论】:
-
请添加您使用的语言的标签,它会吸引更多的人
-
所有四个任务并行运行,Task.WhenAll 不会停止运行代码,它只是创建一个任务,如果你想等到所有任务完成,你可以等待它。看看Task.WaitAll
-
感谢您的反馈。我编辑了
-
4 Task.Run 可以并行运行 如果系统有多个 cpu 核心可以并行运行
-
异步并行。
标签: c# asp.net multithreading asynchronous parallel-processing