【发布时间】:2014-11-26 06:35:42
【问题描述】:
private static void Main(string[] args)
{
for (int i = 0; i < 1000; i++)
{
Task.Factory.StartNew(() =>
{
Thread.Sleep(1000);
Console.WriteLine("hej");
Thread.Sleep(10000);
});
}
Console.ReadLine();
}
为什么这段代码不会在一秒钟后打印 1000 次“hej”?为什么 Thread.Sleep(10000) 对代码行为有影响?
【问题讨论】:
-
你观察到什么行为?
-
线程池管理器不会过多考虑您启动一千个线程的尝试。它让其中的一些线程松了,但是你的程序在所有这些线程上都陷入了困境,这些线程保持忙碌但根本没有做任何有用的事情。它偶尔会允许额外的线程开始运行。
标签: c# multithreading task threadpool