由于OpenMP时是共享内存模型,默认情况下,在共享区域的大部分数据是被共享的
并行区域中的所有线程可以同时访问这个共享的数据
OpenMP只能并行化for循环,它不会并行while和do-while循环,而且只能并行循环次数在for循环外面就确定了的for循环。
OpenMP编译器不检查被parallel for指令并行化的循环所包含的迭代间的依赖关系,而是由程序员来识别这些依赖关系。
任何在循环前声明的变量,在线程间都是共享的
在循环并行区域内,循环迭代变量是不可修改的
https://blog.csdn.net/xuyiqiang87/article/details/52763653
critical :
定义一个临界区,保证同一时刻只有一个线程访问临界区
atomic:
保证变量被原子的更新,即同一时刻只有一个线程再更新该变量