线程互斥和同步-- 互斥锁
#include<stdio.h>
#include<pthread.h>
int count = 0; pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; //创建一把锁,使用宏进行初始化void* pccount(void* arg)
{int i = 0;int temp = 0;while(i<50000000){pthread_mutex_lock(&lock); //加锁,如果锁资源是空,就拿到锁,如果锁资源不是空,就挂起等待// temp=count;count=count+1;//printf("%d",temp);i++;pthread_mutex_unlock(&lock); //操作完临界资源之后,要解锁,这样其他的线程才能够获取锁资源}
// printf("%d\n",count);pthread_exit((void*)123);
}int main()
{pthread_t pid1;pthread_t pid2;int i = pthread_create(&pid1,NULL,pccount,NULL);int m = pthread_create(&pid2,NULL,pccount,NULL);void* join1;void* join2;pthread_join(pid1,&join1);pthread_join(pid2,&join2); //这里必须要有线程等待,不然没有打印结果pthread_mutex_destroy(&lock); //销毁锁资源printf("%d\n",count);return 0;}
线程互斥和同步-- 互斥锁相关推荐
- Linux c线程间的同步----互斥锁、条件变量、信号量
线程 一个进程中的所有线程共享为进程分配的地址空间.所以进程地址空间中的代码段和数据段都是共享的. 如果定义一个函数在各个线程中都可以调用,定义一个全部变量,在各个线程中都可以访问到. 各线程共享资源 ...
- Linux学习06——线程控制与同步互斥
概述 学习目标: 理解线程概念和并发特征,分辨线程与进程的区别与联系 掌握多线程应用编程技术,掌握线程间数据传递基本方法 掌握共享变量识别方法,理解多线程访问共享变量可能带来的问题 理解临界资源.临界 ...
- BCB线程的互斥与同步
线程的互斥与同步 互斥控制是为了避免一个线程在使用某一个对象或全局变量与其他线程发生冲突.实现线程互斥的方法有: (1) 访问代码委托给VCL主线程执行.在线程中若要调用可视化的方法或访问 ...
- windows多线程同步互斥--总结
2019独角兽企业重金招聘Python工程师标准>>> 秒杀多线程面试题系列 参考JustDoIT -- 大部分内容 <Windows核心编程>线程同步对象速查表 对象 ...
- 【学习笔记】第二章——信号量机制 用信号量实现互斥、同步
文章目录 一. 信号量机制 整型信号量 记录型信号量 例子: 总结 二. 用信号量实现互斥.同步 互斥 同步 前驱 总结 一. 信号量机制 信号量:一个用于表示系统中某种资源的数量的变量(整数 or ...
- java 同步锁_java线程中的同步锁和互斥锁有什么区别?
在java中,同步锁和互斥锁英文关键字都是Synchronized,没有本质上的区别,两者都包括对资源的独占,使用起来没有区别.概念上的区别是 1:互斥是通过竞争对资源的独占使用,彼此没有什么关系,执 ...
- 线程同步(互斥锁、条件、读写锁、信号量)
参考:(四十三)线程--线程同步(互斥锁.读写锁.条件变量.信号量) 作者:FadeFarAway 发布时间:2017-01-17 21:25:28 网址:https://blog.csdn.net/ ...
- Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)
同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两 个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数据库内容 ...
- java 多线程(四)—— 线程同步/互斥=队列+锁
同步.异步.互斥的区别 在很多文章中,直接把同步缩小为互斥,并称之为同步.下面也是这样的. 一.线程同步 = 队列 + 锁 同步(这里说的其实是互斥)就是多个线程同时访问一个资源. 那么如何实现? 队 ...
最新文章
- K近邻(KNN)算法是基于实例的算法,如果训练样本数量庞大,预测的时候挨个计算距离效率会很低下,如何破解?
- linux下VNC配置详解
- [转] android 中 pinyin4j的使用
- 北京python培训班价格-北京Python培训班,为什么Python超适合小白学习
- 学习org-mode
- QTableview 获取鼠标坐标的item(QModelIndex)
- 第五周实践项目7 后缀表达式
- mysql系统文件路径修改不了_MySQL数据库改路径后没办法启动的问题
- linux oracle 01157,Oracle数据库启动时出现ORA-01157和ORA-01110问题
- pytorch卷积神经网络_资源|卷积神经网络迁移学习pytorch实战推荐
- BI报表分析和数据可视化,推荐这三个开源工具!
- el表达式 多条件判断
- 数据分析第二章确定分析思路
- UG软件使用10大技巧,将会大大提升工作效率
- 网络编程入门(代码很详细)
- 经典管理学定律3 - 鳄鱼法则
- H5 iframe标签的用法
- 制作小地图MiniMap小结
- 【Marvelous Designer 1】初学MD
- window下使用vnc远程登录linux图形界面和运行应用程序 和odroid Xu4开发板的使用和视频接口VGA、DVI、HDMI的联系
热门文章
- 20160203.CCPP体系详解(0013天)
- asp.net httpmodule 访问页面控件 备忘
- NodeJS+Mongodb+Express做CMS博客系统
- CakePHP中出现persistent is not writable等Warning的解决方法
- 第18章:MYSQL分区
- STL vector list deque区别与实现
- flask异步操作_Python Flask后端异步处理(三)
- unity人物旋转移动代码_Unity3D研究院之脚本实现模型的平移与旋转(六)
- 《introduction to information retrieval》信息检索学习笔记3 词典和容错式检索
- OpenCV+python:圆检测