【问题标题】:Pthread c++ and mutexPthread C++ 和互斥锁
【发布时间】:2013-06-06 10:31:30
【问题描述】:

关于 pthread 和 mutex 的问题。

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

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

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

我什么都不懂……

  • 只使用互斥锁?

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

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

【问题讨论】:

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

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


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2015-07-20
    相关资源
    最近更新 更多