Release版本下,while(Var);被直接优化解决方法

需要用到 while 来判断另一个线程中bool block 的值来做堵塞,代码如下:

while(block);       //  堵塞线程,直到block变为false

//  do something

Debug版本下是堵塞成功的,Release版本就不行了,直接优化掉了,也不可能说直接把优化降级,最后发现一个从来没有使用过的修饰符 — volatile。

 

解决方法:

  命名block的时候,加修饰符 volatile ,作用是该变量不再被编译器优化。

posted @ 2022-05-22 20:26  补码  阅读(187)  评论(0编辑  收藏  举报