标签: c++ openmp
-O2优化标志是否可能重新排列代码,从而可能使多线程应用程序无法正常工作?
作为重新排列代码时un-intended behavior的含义示例:为每个线程创建的(由程序员)声明的变量移出{{} 1}}这样只创建一个单个副本,由所有线程共享。
un-intended behavior
答案 0 :(得分:3)
不,这不可能发生。如果编译器展开循环或者当编译器重新排序循环时程序崩溃,OpenMP将不会非常有用。 OpenMP指令必须指定变量和并行作用域的依赖关系和副作用,编译器在应用优化过程时会将它们考虑在内。