linux mutex互斥体和semaphore信号量的区别
3个回答
展开全部
mutex互斥体只用于保护临界区的代码(访问共享资源),而桐袭漏不用于锁之间的同步,即一个线程释放mutex锁后,马上又可能获取同一个锁,禅镇而不管其它正在等待该mutex锁的其它线程。
semaphore信号量除了起到保护临界区的作用外,还用于锁同步的功能,即一个线程释放semaphore后,会保证正在等待该semaphore的线程优先执行,而不会马上在获取同一个semaphore。
如果两个局烂线程想通过一个锁达到输出1,2,1,2,1,2这样的序列,应使用semaphore, 而使用mutex的结果可能为1,1,1,1,1,2,2,2,111.....。
semaphore信号量除了起到保护临界区的作用外,还用于锁同步的功能,即一个线程释放semaphore后,会保证正在等待该semaphore的线程优先执行,而不会马上在获取同一个semaphore。
如果两个局烂线程想通过一个锁达到输出1,2,1,2,1,2这样的序列,应使用semaphore, 而使用mutex的结果可能为1,1,1,1,1,2,2,2,111.....。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
展开全部
mutex互斥体只用于保护临界区的代码(访问共享资源),而桐袭漏不用于锁之间的同步,即一个线程释放mutex锁后,马上又可能获取同一个锁,禅镇而不管其它正在等待该mutex锁的其它线程。
semaphore信号量除了起到保护临界区的作用外,还用于锁同步的功能,即一个线程释放semaphore后,会保证正在等待该semaphore的线程优先执行,而不会马上在获取同一个semaphore。
如果两个局烂线程想通过一个锁达到输出1,2,1,2,1,2这样的序列,应使用semaphore, 而使用mutex的结果可能为1,1,1,1,1,2,2,2,111.....。
semaphore信号量除了起到保护临界区的作用外,还用于锁同步的功能,即一个线程释放semaphore后,会保证正在等待该semaphore的线程优先执行,而不会马上在获取同一个semaphore。
如果两个局烂线程想通过一个锁达到输出1,2,1,2,1,2这样的序列,应使用semaphore, 而使用mutex的结果可能为1,1,1,1,1,2,2,2,111.....。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mutex保护的资源在同一时刻只允许一个task进行访问;semaphore根据初始值n可以允许至旁衡键多n个task访问。
semaphore可以实现拦咐“等待”机制,一种常见的场景是task0进入阻塞状态“等待”某个事件发生,task1触发事件后“唤醒”task0。task0在“等待”时处于阻塞运巧状态而不是运行状态,因此不会浪费CPU时间。而一个task在拿到mutex之后释放之前不宜进行太长时间的操作,更不能阻塞。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询