OpenMP模式下多线程文件操作(三)
来源:互联网 发布:三菱plc编程方法 编辑:程序博客网 时间:2024/06/05 23:04
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. 示例
输出2000,如果将#pragma omp atomic声明去掉,则结果不确定。
5. critical同步机制
本节介绍互斥锁机制的使用方法,类似于windows下的CriticalSection。
5.1 临界区声明方法
#pragma omp critical [(name)] //[]表示名字可选
{
//并行程序块,同时只能有一个线程能访问该并行程序块
}
例如,
#pragma omp critial (tst)
a = b + c;
5.2 critical与atomic的区别
临界区critical可以对某个并行程度块进行保护,atomic所能保护的仅为一句代码。
5.3 critical示例
- OpenMP模式下多线程文件操作(三)
- OpenMP模式下多线程文件操作
- OpenMP模式下多线程文件操作(二)
- OpenMP模式下多线程文件操作(四)
- OpenMP模式下多线程文件操作(五)
- OpenMP: 多线程文件操作
- Caffe:CPU模式下使用openblas-openmp(多线程版本)
- Caffe:CPU模式下使用openblas-openmp(多线程版本)
- OpenMP学习(三)
- Linux环境下的OpenMP多线程编程
- OpenMP多线程linux下的使用
- 【亲测】centos7下caffe使用openblas-openmp(多线程版本)多线程加速
- OpenMP多线程
- OpenMP(三) 线程同步
- JAVA多线程 <三>单例模式下的多线程问题
- OpenMP与C++:事半功倍地获得多线程的好处(下)
- OpenMP与C++:事半功倍地获得多线程的好处(下)
- OpenMP与C++:事半功倍地获得多线程的好处(下)
- hdu3402_Ants run!
- Oracle的dual表作用
- head first设计原则总结
- jdbc大数据量查询优化(转)
- Android常用控件-DatePicker以及对话框的两种使用方法
- OpenMP模式下多线程文件操作(三)
- vsftpd 安装(vsftpd 530 login incorrect 报错)
- mysql基础篇(四)
- RTEMS DM9000网卡驱动在MINI2440 QEMU上的实现
- mysql基础篇(四)
- Oracle数据库中大数据量查询优化问题--分区表的操作方法
- 第一次发文
- VC6.0迁移到VS2005:error C2440
- VC6.0迁移到VS2005:error C2440