此代码不会按预期按顺序打印数字,如下所示:
012345678910
问题是什么?
static void Main()
{
for (int i = 0; i < 10; i++)
{
int temp = i;
new Thread(() => Console.Write(temp)).Start();
}
}
答案 0 :(得分:3)
您引用http://www.albahari.com/threading/#_Introduction。
我假设您正在谈论部分&#34; Lambda表达式和捕获的变量&#34;,其中作者显示了&#34;捕获变量&#34;的问题,并说明了如何避免这种情况临时变量的问题。
但请注意,作者不声明这将导致数字0 - 9按顺序显示。他声称的内容(尽管他没有显示)是10个线程中的每一个都会显示0到9之一的数字。但可能没有按顺序排列。
那是因为线程是不可预测的,并且是随意操作系统的。