线程同步 atomic

在OpenMP中,线程同步机制包括互斥锁同步机制和事件同步机制。互斥锁同步的概念类似于Windows中的临界区(CriticalSection)以及Windows和Linux中的Mutex,以及VxWorks中的SemTake何SemGive(初始化时信号量为满),即对某一块代码操作进行保护,以保证同时只能有一个线程执行该段代码。

1 #pragma omp atomic
2 x< + or * or - or * or / or & or | or << or >> >=expr
3 (例如x <<= 1; or x *=2;)
4 
5 6 
7 #pragma omp atomic
8 x++ //or x--, --x, ++x

可以看到atomic的操作仅适用于两种情况:

1. 自加减操作
2. x<上述列出的操作符>=expr


 

线程同步之 critical
这里的临界区与Windows下的CriticalSection类似。

临界区声明方法

1 #pragma omp critical [(name)] //[]表示名字可选
2 {
3 //并行程序块,同时只能有一个线程能访问该并行程序块
4 }

 

相关文章:

  • 2021-10-14
  • 2022-12-23
  • 2021-04-06
  • 2021-11-08
  • 2022-02-14
  • 2021-10-11
  • 2022-12-23
猜你喜欢
  • 2022-01-05
  • 2022-12-23
  • 2021-05-30
  • 2021-12-01
  • 2021-04-26
  • 2021-06-12
  • 2021-11-03
相关资源
相似解决方案