为什么我们需要互斥量和信号量?

时间:2017-05-03 18:08:21

标签: mutex semaphore

信号量可以替换互斥锁:

  1. 用1
  2. 初始化sem
  3. lock():执行sem_wait(); (在关键部分sem = 0)
  4. unlock():执行sem_post(1);
  5. 那我们为什么需要互斥?

2 个答案:

答案 0 :(得分:0)

Mutex的存在主要是为了保护代码的关键部分。与信号量相比,它可以比信号量具有更好的性能,因为代码更简单,更短或者可以提供更丰富的功能。

有多种类型的互斥锁:“普通”互斥锁,递归互斥锁,共享互斥锁(读写器锁定)。一些互斥实现可以尝试实现“优先级继承”来对抗优先级倒置。所有这些都不能用于信号量,因为它的使用模式太宽泛了。

答案 1 :(得分:-1)

  

信号量是一种广义互斥量。代替单个缓冲区,我们可以将4 KB缓冲区拆分为4个1 KB缓冲区(相同的资源)。信号量可以与这四个缓冲区相关联。消费者和生产者可以同时处理不同的缓冲区。

http://www.geeksforgeeks.org/mutex-vs-semaphore/