Vre*_*nak 20 .net c# compiler-construction optimization settings
在VS2010 Pro的构建设置面板中,有一个带有"优化代码"标签的CheckBox ......当然,我想检查一下......但是要非常谨慎,我问我的兄弟,并且他说它未经检查以进行调试,并且在C++中它可能会做一些破坏或破坏代码的事情......但他不了解C#.
所以我的问题是,我可以在此框中查看我的发布版本,而不必担心它会破坏我的代码吗?第二,如果它可以破解代码,何时以及为什么?欢迎解释链接.
Dav*_*nan 25
您通常会在发布版本中使用此选项.这样做是安全和主流的.没有理由害怕在启用优化的情况下发布代码.启用优化可能会干扰调试,这是禁用调试版本的一个很好的理由.
在未以其他方式发生的释放模式下运行时,可能会出现一些错误.想到臭名昭着的"非挥发性旗帜":
flag = false;
Thread t = new Thread(
o =>
{
while(!flag)
{
// do stuff
}
});
t.Start();
// main thread does some work
flag = true;
t.Join(); // will never return in release mode if flag is not volatile
Run Code Online (Sandbox Code Playgroud)
这是因为编译器优化,因为标志变量被线程t的核心缓存,因此它无法看到标志的更新值.