我对以下陈述非常困惑。
我已经读过信号量基于系统调用的地方..它更多地处理调度程序,因此它比互斥锁慢。但我没有得到它。请帮我清除这些概念。
感谢名单
答案 0 :(得分:5)
Mutex和信号量是两回事。由于互斥体的简单性可能更快,但同时它有不同的用途,所以比较这两件事就像比较刀和浅滩。条件变量也是如此,它们只是不同。您可以将信号量视为具有条件和计数器的互斥锁。使用这三个对象可以实现信号量的行为。但是,POSIX中的信号量也可用于跨进程同步对共享资源的访问,而互斥和条件仅是进程内对象。
至于轻量级和速度语句,我想这取决于实现。 Linux中的信号量更复杂,因为它们支持进程间同步,并且互斥&条件是使用futex
子系统和原子操作。但同样,比较这些事情几乎没有任何意义,因为它们有不同的用途。
我建议您阅读以下有关此主题的内容:
答案 1 :(得分:0)
注意,您不限于互斥锁,信号量或条件变量。您也可以使用直接原子操作。不要忘记谷歌“gcc原子操作”。顺便说一句,它们是您可以同步的最快/最低级别的方式。