大家来讨论一下什么时候应该用互斥机制、锁、关键区域。怎么用?

AlanBruce
企业官方账号
2010-03-22 05:24:54
我觉得自己越用越晕…………

都不知道用的可有作用
...全文
199 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
a469322833 2012-01-04
  • 打赏
  • 举报
回复
多线程
a469322833 2012-01-04
  • 打赏
  • 举报
回复
多纯种,主线程与子线程都会对全局变量进行操作时,应该使用!
SUXYU 2010-04-08
  • 打赏
  • 举报
回复
如果只是从它们的本义去理解这些东西的内含,会越弄越糊涂。换一个思路,从为什么会有这些东西角度去看应该更能理顺关系。实际上它是人们处理以下问题总结出来的最有效办法的一个形象说法:
1、多任务多进程序设计中的稀有资源共享使用,特别是有序列要求的资源(如打印机、串口、磁带机等),每一个进程,只能在它的特定任务完成后才能将资源交给其它进程使用。否则其它进程都只能等。在使用这些资源上的互斥是很好理解的。解决此类问题的最好办法就是操作灯(一个系统有多个相同的资源时),如果只有唯一的资源,就是锁的说法了。后来将此方法推广到其它和这种情况类似的场合(如:对专门用途进程的共享;由于系统需要,两个进程不能同时运行的场合;共享数据等)就有了进程互斥、锁、关联数据区等说法了。。。。
2、共享数据一直是进程及进程内和棋模块进行数据传递最方便和最常用的方法之一。但在有多个进程或模块都会修改数据的时候,会出现不可预料结果的问题(乱套了)。这其中有些是系统设计时已规定了的共享策略(多进程时),也有为防止程序设计的错误(多模块时)。为防止数据乱套了会産严重后果的情况发生,就有了关键数据的说法了。对此类数据必须加锁,直到加锁的模块确认安全后才释放锁。。。
traceless 2010-03-22
  • 打赏
  • 举报
回复
以前我们有个数学老师,不想再继续讲答题目时,就这样说:

说,说得完吗?讲,又讲得完吗?好了,同学们,我们继续下一道题吧

嘿嘿。。。
FrankSun80 2010-03-22
  • 打赏
  • 举报
回复
线程同步时候使用:
进程内用关键区域
进程间用互斥

它们都叫锁,钥匙只有一个,谁拿到谁进入需要同步的代码段
herman~~ 2010-03-22
  • 打赏
  • 举报
回复
多线程同步时候会用到
具体我讲不全,可以google下多线程编程嘛
jackyjkchen 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 forster 的回复:]
线程切换机制 《 critical section 《 mutex
应该是这样的吧 mutex 比 critical section有timeout 效率肯定低
windows也是抄的linux核心机制应该一样的
[/Quote]
恐怕应该反过来,Windows下的多线程发展比linux下早,unix/linux早期都只有“多进程”机制,后来才加进了线程
forster 2010-03-22
  • 打赏
  • 举报
回复
线程切换机制 《 critical section 《 mutex
应该是这样的吧 mutex 比 critical section有timeout 效率肯定低
windows也是抄的linux核心机制应该一样的
jackyjkchen 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 forster 的回复:]
critical section内部也应该是mutex实现的
他可以让线程挂起
mutex的话 更灵活吧 可以设置timeout

锁 指什么 spinlock?
内核中spinlock是抬高irql实现的
[/Quote]
非也,效率完全不同,关键段明显快过互斥体,仙剑Windows核心编程,这个问题是书本上的知识,没什么好讨论的。
AlanBruce 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 chenhu_doc 的回复:]
一言难尽,所以看书才是最好的方法。
[/Quote]
推荐几本讲的不错的 啊
瓶盒 2010-03-22
  • 打赏
  • 举报
回复
当然是多线程的时候用
q645989637 2010-03-22
  • 打赏
  • 举报
回复
帮顶 学习
chenhu_doc 2010-03-22
  • 打赏
  • 举报
回复
一言难尽,所以看书才是最好的方法。
AlanBruce 2010-03-22
  • 打赏
  • 举报
回复
恩…………

用的人不是很多吗

贪食蛇男 2010-03-22
  • 打赏
  • 举报
回复
我就来看看,用不太好。
kim_jinye 2010-03-22
  • 打赏
  • 举报
回复
纯粹来接分的!
forster 2010-03-22
  • 打赏
  • 举报
回复
critical section内部也应该是mutex实现的
他可以让线程挂起
mutex的话 更灵活吧 可以设置timeout

锁 指什么 spinlock?
内核中spinlock是抬高irql实现的
至善者善之敌 2010-03-22
  • 打赏
  • 举报
回复
互斥,我理解他区别于临界区(用到了锁)是可以支持不同进程间的同步,比如说你的QQ进程和你的MSN进程通讯同步!


关键区域???是什么?
candeabc123 2010-03-22
  • 打赏
  • 举报
回复
支持线程同步?
菜鸟飞过。
lb_bn 2010-03-22
  • 打赏
  • 举报
回复
帮楼主顶一下。。。
加载更多回复(1)

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧