Infinite loop in release mode

前端 未结 4 546
Happy的楠姐
Happy的楠姐 2020-12-15 19:08

When I run the following code in debug mode, it\'ll successfully finish and exit. However, if I run the following code in release mode, it\'ll get stuck i

4条回答
  •  萌比男神i
    2020-12-15 19:50

    Looks like some sort of optimization for value of local variable - changing to a field make it terminate ok (note that volatile or correct locking should be used in actual code):

    using System;
    using System.Threading;
    
    class Program
    {
        static bool stop = false;
        static void Main(string[] args)
        {
    
            new Thread(() =>
            {
                Thread.Sleep(1000);
                stop = true;
                Console.WriteLine("Set \"stop\" to true.");
    
            }).Start();
    
            Console.WriteLine("Entering loop.");
    
            while (!stop)
            {
            }
    
            Console.WriteLine("Done.");
        }
    }
    

提交回复
热议问题