-1

关于 pthread 和 mutex 的问题。

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

我有两个队列操作:push 和 pop

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

我什么都不懂……

  • 只使用互斥锁?

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

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

4

1 回答 1

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

另外请稍微改写一个问题,这很难理解。

于 2013-06-10T17:29:30.377 回答