【发布时间】:2018-06-29 19:52:38
【问题描述】:
我有以下代码:
public static void Main(string[] args)
{
bool isComplete = false;
var t = new Thread(() =>
{
int i = 0;
while (!isComplete) i += 0;
});
t.Start();
Thread.Sleep(500);
isComplete = true;
t.Join();
Console.WriteLine("complete!");
}
程序将在发布模式下挂起,并在调试模式下给出输出(“完成!”)。
这是什么原因?
谢谢。
【问题讨论】:
-
“为什么这个不安全的多线程代码行为不规律”并不是一个真正有用的问题......虽然它是有趣的编码难题,但它的实用价值为零......
-
@AlexeiLevenkov 在生产环境中的现实生活中看到这样的代码,人们在徘徊为什么它是错误的并且不像在他们的开发机器上那样工作,然后决定在生产中运行调试版本,我不会感到惊讶.这一切都只是因为他们没有意识到一些优化。
标签: c#