对精致码农大佬的 [理解 volatile 关键字] 文章结论的思考和寻找真相
一:背景 1. 讲故事 昨天在园里的编辑头条看到 精致码农大佬 写的一篇题为: [C#.NET 拾遗补漏]10:理解 volatile 关键字 (https://www.cnblogs.com/willick/p/13889006.html) 的文章,大概就是说在 多线程环境下,一个在debug不出现,在release中出现的bug,原文代码如下: public class Worker { private bool _shouldStop; public void DoWork ( ) { bool work = false ; // 注意:这里会被编译器优化为 while(true) while (!_shouldStop) { work = !work; // do sth. } Console.WriteLine( "工作线程:正在终止..." ); } public void RequestStop ( ) { _shouldStop = true ; } } public class Program { public static void Main ( ) { var worker = new Worker(); Console.WriteLine( "主线程:启动工作线程..." ); var workerTask = Task.Run(worker.DoWork)