Гонки потоков, почему так работают потоки?

У меня есть два разных результата от обмена двумя строками кода(done = true с помощью Console.Write ()один)

Если я поставлю done=true, во-первых, результат будет: Правда

Иначе, если я сначала поставлю Console.WriteLine (), результатом будет: ЛОЖЬ Ложь

Почему? (внимательно посмотрите, эта переменная bool является статической!)

using System;
using System.Threading;

class Program
{
    static bool done;

    static void Main(string[] args)
    {
        new Thread(test).Start();
        test();
    }

    static void test()
    {
        if (!done)
        {
            done = true;
            Console.WriteLine(done);
        }
    }
}
5
задан unor 17 August 2012 в 14:32
поделиться