C++ Pthread c++;和互斥

C++ Pthread c++;和互斥,c++,signals,mutex,conditional-statements,critical-section,C++,Signals,Mutex,Conditional Statements,Critical Section,关于pthread和mutex的问题 我有一个共享队列的体系结构生产者消费者 我有两个队列操作:推送和弹出 对于这两种操作,我都使用互斥锁(lock-implementation-unlock) 我什么都不懂 只使用互斥锁 我需要使用信号还是等待线程唤醒 当线程发现互斥锁被锁定时,该线程将被锁定(锁定互斥锁是一个阻塞操作?) 无论何时共享公共资源,使用互斥是最好的方式。有时可能需要信号量 您不需要使用信号来唤醒线程,除非您自己将其置于睡眠状态。通常,如果一个线程碰到一个被锁定的互斥锁,它将等

关于pthread和mutex的问题

我有一个共享队列的体系结构生产者消费者

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

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

我什么都不懂

  • 只使用互斥锁

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

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

      • 无论何时共享公共资源,使用互斥是最好的方式。有时可能需要信号量
      • 您不需要使用信号来唤醒线程,除非您自己将其置于睡眠状态。通常,如果一个线程碰到一个被锁定的互斥锁,它将等待。CPU调度算法将处理线程,您可以确保,一旦互斥锁解锁,线程将被唤醒,而不会出现任何性能问题
      • 线程一旦发现被阻止的互斥锁,就不会被锁定。线程将直接进入等待队列,直到cpu调度算法决定将其取出。但这实际上取决于你对什么是锁定的定义

      另外,请将一个问题的措辞稍作修改,因为它很难理解。

      您的问题非常笼统。信号和互斥体通常一起使用,这完全取决于您的用例。并行编程是一个困难的话题,除非您投入一些前期研究来理解一些关键概念。我建议您先尝试一下,然后再提出更具体的问题。(不过我没有投你反对票)。