已有信号量,为啥还要搞一套互斥锁和条件变量?

RT
既然信号量可以用于线程,那么线程为什么要自己搞一套呢?

我记得《LInux/Unix系统编程手册》里好像提到过。。但手头没书,也想不起来了。求助各位朋友们。
全部评论
都是基于futex做的,所以本质是一样的都是在用户空间的玩意儿,然后sem类似与生产者消费者,比如同时sem_post多个,而互斥锁只能容纳一个,不然会deadlock?
点赞 回复 分享
发布于 2017-08-25 19:01
不是,信号量相当于多个线程共享一个int变量,基于这个实现同步;条件变量就把这个变量广义化了,你可以根据一个int,一个string,甚至一个bool状态同步。缺点就是条件变量需要你自己用一个互斥锁,维护这个被广义化了的变量
点赞 回复 分享
发布于 2022-02-13 15:44
信号量不是用来进程同步的么
点赞 回复 分享
发布于 2017-08-25 20:31
互斥锁只能实现一个资源的互斥仿问,信号量可以实现多个同类资源的互斥访问
点赞 回复 分享
发布于 2017-08-25 18:34
信号量只能用来进程同步吧
点赞 回复 分享
发布于 2017-08-25 18:21
一个是system V,一个是posix
点赞 回复 分享
发布于 2017-08-25 18:06

相关推荐

03-26 13:04
已编辑
电子科技大学 算法工程师
xiaowl:你这个简历“条目上”都比较有深度性,但是实际上面试官又没法很好的评估你是怎么达到很多看上去很厉害的结果的。要避免一些看上去很厉害的包装,比如高效的内存复用策略的表达,如果仅是简单的一些内存共享机制,而且面试上也没有深挖的空间,就不要这样表达。比如,工程化模式本质上可能就是定义了一些abstract class,那也就没特别多值得讲的内容。建议简历上应该侧重那些你花了大量时间和精力解决、研究的问题,不要过分追求“丰富”,而是关注在技术深入度、问题解决能力的表现上。
没有实习经历,还有机会进...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务