线程同步互斥的4种方式

什么情况下用临界区?什么情况下用互斥量?什么情况下用信号量?什么情况下用事件对象?谢谢... 什么情况下用临界区?
什么情况下用互斥量?
什么情况下用信号量?
什么情况下用事件对象?
谢谢
展开
 我来答
DemonZXY3Ul
推荐于2017-09-14 · 超过54用户采纳过TA的回答
知道答主
回答量:154
采纳率:0%
帮助的人:105万
展开全部
临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别
1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。
2、互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享
3、信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目
4、事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作
小歆嵩
推荐于2017-09-15 · 知道合伙人数码行家
小歆嵩
知道合伙人数码行家
采纳数:403 获赞数:41310
河南科技大学在校本科生

向TA提问 私信TA
展开全部
  1. 临界区(Critical Section):适合一个进程内的多线程访问公共区域或代码段时使用

  2. 互斥量 (Mutex):适合不同进程内多线程访问公共区域或代码段时使用,与临界区相似。

  3. 事件(Event):通过线程间触发事件实现同步互斥

  4. 信号量(Semaphore):与临界区和互斥量不同,可以实现多个线程同时访问公共区域数据,原理与操作系统中PV操作类似,先设置一个访问公共区域的线程最大连接数,每有一个线程访问共享区资源数就减一,直到资源数小于等于零。
     

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式