关于同步对象的一些问题[Linux os]

时间:2011-01-24 02:10:49

标签: c linux

我对以下陈述非常困惑。

  1. “Mutex比信号量轻,速度快”
  2. “信号量使用的内存多于条件变量”
  3. 我已经读过信号量基于系统调用的地方..它更多地处理调度程序,因此它比互斥锁慢。但我没有得到它。请帮我清除这些概念。

    感谢名单

2 个答案:

答案 0 :(得分:5)

Mutex和信号量是两回事。由于互斥体的简单性可能更快,但同时它有不同的用途,所以比较这两件事就像比较刀和浅滩。条件变量也是如此,它们只是不同。您可以将信号量视为具有条件和计数器的互斥锁。使用这三个对象可以实现信号量的行为。但是,POSIX中的信号量也可用于跨进程同步对共享资源的访问,而互斥和条件仅是进程内对象。

至于轻量级和速度语句,我想这取决于实现。 Linux中的信号量更复杂,因为它们支持进程间同步,并且互斥&条件是使用futex子系统和原子操作。但同样,比较这些事情几乎没有任何意义,因为它们有不同的用途。

我建议您阅读以下有关此主题的内容:

答案 1 :(得分:0)

注意,您不限于互斥锁,信号量或条件变量。您也可以使用直接原子操作。不要忘记谷歌“gcc原子操作”。顺便说一句,它们是您可以同步的最快/最低级别的方式。