我是C#newbie。
问题:
class Program
{
static void why()
{
List<Task> listOfDummyTask = new List<Task>();
for (int i = 0; i < 100; ++i)
{
Task hoho = Task.Run(() =>
{
Thread.Sleep(2000);
Console.WriteLine("Die");
});
listOfDummyTask.Add(hoho);
}
Task.WaitAll(listOfDummyTask.ToArray());
}
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
sw.Reset();
sw.Start();
why();
sw.Stop();
Console.WriteLine("{0} ms", sw.ElapsedMilliseconds.ToString());
Console.WriteLine("----------------------------------");
sw.Reset();
sw.Start();
why();
sw.Stop();
Console.WriteLine("{0} ms", sw.ElapsedMilliseconds.ToString());
Console.WriteLine("----------------------------------");
Console.WriteLine("End");
}
}
首先,我打电话给为什么(),它打印&#34;死&#34;同样4次。
它打印1~4&#34; Die&#34;。
首先为什么()秒表返回28,000毫秒,但当我调用秒时为什么(),
它打印&#34; Die&#34; 8次,它打印5~8&#34; Die&#34;同一时间..
第二个为什么()秒表返回10,000~14,000毫秒。
为什么?
它的关键词是什么?
答案 0 :(得分:0)
Task.Run循环100次会将100个工作项排入默认调度程序(线程池)。如果线程池决定同时执行最多4个项目,那么它将从队列中取出4个工作项并在大约2秒内完成它们。然后它将需要四个,依此类推,直到完成所有工作。
没有真正期望同时执行多少任务,以及将推迟多少任务。