我刚接触OpenMP才一天,问个很简单的问题,请大家不要笑话我
我在网上看到一篇文章,叫做《OpenMP与C++:事半功倍地获得多线程的好处》。
其中有一段话是这样的:
切记OpenMP指令同时影响线程组里的所有线程。因此下面的代码片段是非法的并且有未定义的运行时行为(崩溃,或者在特别情况下被挂起):
#pragma omp parallel
{
if(omp_get_thread_num() > 3)
{
#pragma omp single // 所有的线程可能都不能访问
x++;
}
}
我没看懂为何x++对所有的线程可能都没有执行。
谁帮我解答一下?