OpenMP --- 线程同步
1. 引言
在OpenMP中,线程同步机制包括互斥锁同步机制和事件同步机制。
2. 互斥锁同步
互斥锁同步的概念类似于Windows中的临界区(CriticalSection)以及Windows和Linux中的Mutex以及VxWorks中的SemTake和SemGive(初始化时信号量为满),即对某一块代码操作进行保护,以保证同时只能有一个线程执行该段代码。
3. atomic(原子)同步语法
#pragma omp atomic
x < + or * or - or * or / or & or | or << or >> >=expt
(例如,x<<=1; or x*=2;)
或
#prgma omp atomic
x++ or x-- or --x or ++x
可以看到atomic的操作仅适用于两种情况:
1. 自加减操作;
2. x<上述列出的操作符>=expr;
4. 示例