Pthread c ++和mutex

时间:2013-06-10 17:21:24

标签: c++ signals mutex conditional-statements critical-section

关于pthread和互斥锁的问题。

我有一个具有共享队列的架构生产者消费者。

我有两个队列操作:推送和弹出

对于这两种操作,我使用互斥锁(lock - implementation - unlock)。

我不明白......

  • 只需使用互斥锁?

  • 我需要使用信号还是等待线程唤醒?

  • 当一个线程发现互斥锁被锁定时,该线程将被锁定(锁定互斥锁是一个阻塞操作?)

1 个答案:

答案 0 :(得分:2)

  • 每当您共享公共资源时,使用互斥锁是最好的方法。有时可能需要信号量。
  • 您不需要使用信号来唤醒线程,除非您自己将其置于睡眠状态。通常,如果线程遇到锁定的互斥锁,它将等待。 CPU调度算法将负责该线程,并且您可以确保一旦互斥锁解锁就会被唤醒而没有任何性能问题。
  • 一旦找到被阻止的互斥锁,线程就不会被锁定。线程将简单地进入等待队列,直到cpu调度算法决定应该取出它。但这实际上取决于你对自己被锁定的定义。

还请稍微改一个问题,这很难理解。