社区
其它技术问题
帖子详情
Linux中 条件变量为什么要用互斥锁来保护?
tptemp3
2011-12-03 05:27:58
如果pthread_cond_wait只有cond*一个参数,pthread_cond_signal也只有cond*一个参数,一个用来等,一个用来唤醒,工作的也挺好的不是么?
所有书所有资料所有人都说“互斥锁用来保护条件变量”“防止竞争”等等,为什么要保护?防止什么竞争?如果所有使用pthread_cond_wait的地方mutex参数各不相同,那么这个mutex参数是不是就相当于没有用了?
谢谢!!
...全文
378
7
打赏
收藏
Linux中 条件变量为什么要用互斥锁来保护?
如果pthread_cond_wait只有cond*一个参数,pthread_cond_signal也只有cond*一个参数,一个用来等,一个用来唤醒,工作的也挺好的不是么? 所有书所有资料所有人都说“互斥锁用来保护条件变量”“防止竞争”等等,为什么要保护?防止什么竞争?如果所有使用pthread_cond_wait的地方mutex参数各不相同,那么这个mutex参数是不是就相当于没有用了? 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
by_winds
2013-04-02
打赏
举报
回复
三楼的回答比较靠谱,其它全是所问非所答,要么是照本宣科装“专家”! 因为条件变量是为了通讯的两个线程之间使用,所以要保证两个相关线程之间对这个资源的使用,如果不保护,则如果存在第三个进程pthread_cond_signal这个条件。 条件变量存在的意义我想是 限定两个线程之间进行可靠同步。因为互斥锁不能跨线程,信号量不对线程数目进行限制。
awsqsh
2012-02-11
打赏
举报
回复
现在都是多任务 多线程 怕其他线程 什么的 改变那个变量值 出现数据不一致 所以就要保护起来。
huhaifengasd
2012-02-11
打赏
举报
回复
唤醒好像是一般等待某件事情完成然后唤醒一个状态。如果步加锁 进程同步会出问题
lys86_1205
2012-02-11
打赏
举报
回复
你好好看看unix高级编程,在unix中互斥锁是很重要的,好好看看关于互斥的几个函数是怎样执行的
stevens
2011-12-21
打赏
举报
回复
建议你好好看一下 unix system programming 这本书 基础课 必修。
seucs
2011-12-04
打赏
举报
回复
条件变量
也是一种互斥使用的资源,所以要有一个mutex来保护它,因为在pthread_cond_wait里有V操作和P操作,只是由调用的函数pthread_cond_wait来调用这两个PV操作,你这样理解就行了
nuaazdh
2011-12-04
打赏
举报
回复
建议你看一下操作系统中“进程同步”部分内容,如果不设置互斥,由于对参数cond*的运算最终在机器上通过寄存器实现,如果两个进程不采用互斥锁的话,执行顺序的不同可能导致两个进程中同一个参数cond*的值不一致,《操作系统概念》第六版翻译版 第143页有个讲解,可以看一下。
Linux
互斥锁
、
条件变量
和信号量
Linux
互斥锁
、
条件变量
和信号量
Linux
互斥锁
、
条件变量
和信号量
Linux
互斥锁
、
条件变量
和信号量
Linux
互斥锁
、
条件变量
和信号量
Linux
互斥锁
、
条件变量
和信号量
Linux
互斥锁
、
条件变量
和信号量
Linux
互斥锁
、条件...
浅谈
互斥锁
为什么还要和
条件变量
配合使用
而
条件变量
通过允许线程阻塞和等待另一个线程发送信号的方法弥补了
互斥锁
的不足,它常和
互斥锁
一起配合使用。使用时,
条件变量
被用来阻塞一个线程,当条件不满足时,线程往往解开相应的
互斥锁
并等待条件发生变化。...
Linux
C 多线程编程之
互斥锁
与
条件变量
实例详解
一、
互斥锁
互斥量从本质上说就是一把锁, 提供对共享资源的
保护
访问。 1. 初始化: 在
Linux
下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化: 对于静态分配的互斥量, 可以把它设置为...
linux
无亲缘关系间进程同步通信实现(
互斥锁
+
条件变量
+共享内存模式)
linux
无亲缘关系间进程同步通信实现(
互斥锁
+
条件变量
+共享内存模式)
linux
无亲缘关系进程间通信(
互斥锁
+
条件变量
+共享内存)
使用
互斥锁
+
条件变量
+共享内存的模式实现
linux
下亲缘关系间进程间同步通信 说明编译时加上 -lrt -lpthread参数
其它技术问题
3,881
社区成员
9,054
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章