由于各工作线程处在相同的地址空间中,所以OpenMP提供了一些用于同步的指导语句。他们包括:
・ master;
・ critical(name) ;
・ barrier
・ atomic
・ flush
・ ordered
他们的形式如下:
!$OMP MASTER
block
!$OMP END MASTER
由master和对应的end master语句共同说明。 包含在master和end master中的程序块由主线程执行(线程号为0的线程),其它线程则略过这个程序块,直接执行下面的语句。
!$OMP CRITICAL[(name)]
block
!$OMP END CRITICAL[(name)]
由critical和end critical语句共同说明。声明由critical和end critical语句包围的程序块为一个临界区。name为临界区对应的锁的名字,注意匹配的critical/end
critical必须给出相同的临界区名。当name省略时,申明的是一个无名的临界区,程序中所有的无名临界区共享同一把锁。
|