一、master 指令
只有主线程才执行这块代码块
#pragma omp master
{
......
}
二、critical region
对变量有竞争代码区和I/O操作有效 但仍然是随机的顺序
注意critical region有一些时间消耗
critical 和 原子结构
critical:所有线程都执行这段代码,但同一时间只有一个在执行
#pragma omp critical [(name)]
{...}
atomic:只有载入和存储是原子的,这是一个轻量级的,特殊的critical区
#pragma omp atomic
<statement>
三、更多同步结构
order 包含的代码会根据迭代循环的顺序,顺序执行
#pragma omp ordered
{<code-block>}
flush 保证所有的工作线程在内存中有连续的对象
#pragma omp flush [(list)]