Thread racing, why do threads work so?

Viewed 281

I have two different result from exchanging two lines of code ( done = true with Console.Write() one )

If I put done = true, firstly, the result will be: True

Else If I put Console.WriteLine() firstly, the result will be: False False

Why? ( see carefully, that bool variable is static! )

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);
        }
    }
}
4 Answers
Related