线程不打印顺序

时间:2014-12-08 01:04:01

标签: c# multithreading

此代码不会按预期按顺序打印数字,如下所示:

012345678910

问题是什么?

    static void Main()
    {
        for (int i = 0; i < 10; i++)
        {
            int temp = i;    
            new Thread(() => Console.Write(temp)).Start();
        }
    }  

1 个答案:

答案 0 :(得分:3)

您引用http://www.albahari.com/threading/#_Introduction

我假设您正在谈论部分&#34; Lambda表达式和捕获的变量&#34;,其中作者显示了&#34;捕获变量&#34;的问题,并说明了如何避免这种情况临时变量的问题。

但请注意,作者声明这将导致数字0 - 9按顺序显示。他声称的内容(尽管他没有显示)是10个线程中的每一个都会显示0到9之一的数字。但可能没有按顺序排列。

那是因为线程是不可预测的,并且是随意操作系统的。