这两种情况之间有什么区别? 我不知道该使用哪个。 看来他们基本上是在做同样的事情。

pthread_lock(&mutex)
critical section
pthread_unlock(&mutex)

VS

sem_wait(&mutex)
section
sem_post(&mutex)

===============>>#1 票数:2

其他答案忘记提及的是,信号量没有“所有者”。 互斥锁通常具有锁的所有者,因此只有锁定它的线程才能将其解锁。 信号量只是计数器。

===============>>#2 票数:1

Mutex一次仅允许一个线程访问关键部分。

信号量允许更多的并发。 例如解决读者和作家的问题-请参阅http://en.wikipedia.org/wiki/Readers%E2%80%93writers_problem

===============>>#3 票数:1

互斥锁通常是二进制的,而信号量可以初始化为大于1的值。实际上,这意味着一个以上的线程可以同时持有信号量的锁,而互斥锁则不可能。 希望有帮助!

===============>>#4 票数:0

有时互斥锁会提供优先级提升,以防止优先级倒置,而信号量则不会。 在我的RTOS中,这是我选择一个而不是另一个的主要原因。

  ask by user3552926 translate from so

未解决问题?本站智能推荐: