OpenMP是跨平台的多核多线程编程的一套指导性的编译处理方案(Compiler Directive),指导编译器将代码编译为多线程程序。

多线程编程中肯定会涉及到线程之间的资源共享问题,就可以使用互斥锁,就是只有获得互斥锁的线程可以执行,其他线程阻塞。

1.OpenMP中的互斥锁函数

  void omp_init_lock(omp_lock *)              初始化互斥器

  void omp_destroy_lock(omp_lock *)       销毁互斥器

  void omp_set_lock(omp_lock *)              获得互斥器

  void omp_unset_lock(omp_lock *)          释放互斥器

  bool omp_test_lock(omp_lock *)             试图获得互斥器,如果获得成功返回true,否则返回false

2.代码实例

 1 #include <iostream>
 2 #include <omp.h>
 3
 4 static omp_lock_t lock;
 5 void putMes(int i)
 6 {
 7     std::cout << i << ":AA" << std::endl;
 8     omp_set_lock(&lock); //获得互斥器
 9     sleep(1);
10     std::cout << i << ":BB1" << std::endl;
11     sleep(1);
12     std::cout << i << ":BB2" << std::endl;
13     omp_unset_lock(&lock); //释放互斥器
14 }
15
16 int main()
17 {
18     omp_init_lock(&lock); // 初始化互斥锁
19 #pragma omp parallel for
20     for (int i = 0; i < 4; ++i)
21     {
22         putMes(omp_get_thread_num());
23     }
24     omp_destroy_lock(&lock); //销毁互斥器
25     return 0;
26 }

编译执行(可以看到BB1,BB2总是顺序一起输出的):

OpenMP 线程互斥锁相关推荐

  1. Linux线程-互斥锁pthread_mutex_t

    Linux线程-互斥锁pthread_mutex_t 在线程实际运行过程中,我们经常需要多个线程保持同步.这时可以用互斥锁来完成任务:互斥锁的使用过程中,主要有pthread_mutex_init, ...

  2. Python 线程互斥锁 Lock - Python零基础入门教程

    目录 一.前言 二.Python 线程共享全局变量 三.Python 线程互斥锁 1.创建互斥锁 2.锁定资源/解锁资源 四.Python 线程死锁 五.重点总结 六.猜你喜欢 一.前言 在前一篇文章 ...

  3. python-生产者消费者模型_线程_线程互斥锁_GIL全局解释器锁

    进程 1. 开启进程的两种方式 2. 进程对象其他属性和方法-pid: 进程id号 os.getpid()-ppid: 父进程id号 os.getppid() -is_alive(): 当前进程是否存 ...

  4. linux进程线程同步之 - POSIX线程互斥锁

    POSIX线程互斥锁 使用范围:线程同步 本文转自:http://blog.csdn.net/jiebaoabcabc/article/details/37914769 一.函数介绍 1.初始化互斥锁 ...

  5. 网络编程-线程,守护线程,线程互斥锁-26

    网络编程-线程,守护线程,线程互斥锁-26 内容: 进程部分: 进程间通信=>IPC 生产者消费者模型() 线程部分: 1. 线程理论() 2.开启线程的两种方式() 3. 线程对象其他相关的属 ...

  6. android 线程互斥锁,线程锁(互斥锁Mutex)及递归锁

    一.线程锁(互斥锁) 在一个程序内,主进程可以启动很多个线程,这些线程都可以访问主进程的内存空间,在Python中虽然有了GIL,同一时间只有一个线程在运行,可是这些线程的调度都归系统,操作系统有自身 ...

  7. Linux线程-互斥锁pthread_mutex_t

    在线程实际运行过程中,我们经常需要多个线程保持同步.这时可以用互斥锁来完成任务:互斥锁的使用过程中,主要有pthread_mutex_init,pthread_mutex_destory,pthrea ...

  8. 信号量与线程互斥锁的区别

    援引CU上一篇帖子的内容: "信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在 哪里).而互斥锁 ...

  9. linux线程互斥锁

    linux线程同步(1)-互斥量 一.概述 互斥量是线程同步的一种机制,用来保护多线程的共享资源.同一时刻,只允许一个线程对临界区进行访问. 互斥量的工作流程:创建一个互斥量,把这个互斥量的加锁调用放 ...

最新文章

  1. 两条波浪线符号_四年级数学上册第二单元“线的认识”作业单(附带答案)
  2. 网站服务器可以用虚拟主机吗,做网站虚拟主机可以用服务器吗
  3. 怎么自学《现代控制理论》
  4. SpringMVC - 1.DispatcherServlet
  5. OP_Codes为BCH带来更多更好的解决方案
  6. 云服务器怎么设置数据库文件,怎么设置云服务器数据库
  7. 编译问题收集、汇总与积累
  8. 【数理知识】《积分变换与场论》王振老师-目录
  9. OpenCASCADE:Modeling Data之边界框
  10. sas Data步数据读取流程详解
  11. 计算机网络实验ifconfig,《计算机网络》操作系统网络配置实验.doc
  12. 用css实现星级评分效果
  13. Stack Overflow 2021开发者调查报告 - 数据库篇!
  14. Flutter功能 中ListView和GridView嵌套报错?【教你一步搞定】
  15. Ant + Jenkies +Tomcat 自动构建部署Web项目
  16. python etree创建xml_python-如何使用xml.etree.Element编写XML声明
  17. LBP特征提取原理和python库代码
  18. 最大规模开源中文语音数据集 — aidatatang_1505zh及其语音识别基准实验详解
  19. 深度Linux怎样关闭休眠,deepin如何休眠,
  20. 慕课网-安卓攻城狮视频学习及练习(一)

热门文章

  1. Allegro如何导出生产文件
  2. 组态王6.55安装教程
  3. 4gl 上传文件_文件管理密码相册工具app下载-文件管理密码相册工具app安卓版下载v1.8...
  4. python之穿越火线游戏代码_Python实现拼字游戏与代码重构
  5. 有源降噪装置专利(转)
  6. 从民宅到独栋大厦 我们搬家啦!
  7. Kotlin实践(3)-入口 函数
  8. python3随笔-特征值,特征向量,逆矩阵
  9. 【学术相关】U.S.News正式发布最新的2022最佳全球院校排名
  10. 【时间序列】再次出发!FaceBook 开源一站式服务时序利器 Kats !