gpt4 book ai didi

c++ - 公平重入锁 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:43:34 28 4
gpt4 key购买 nike

我正在开发一个程序,当一个线程比另一个线程做更多的工作时,该程序会遭受饥饿。关键部分由可重入 QMutex 保护,这是不公平的。

在 Java 中,您可以为锁指定一个公平性参数。 C++(或 boost 库)是否有可用的公平可重入锁?最好达到 C++11。

我之前研究过,boost里面有shared_lock,但是我不需要读/写锁。只是一个锁,保证每个线程都有平等的机会进入临界区。

非常感谢。

最佳答案

C++ 线程原语实际上是基于 Posix 线程的,而 Posix 没有任何公平的互斥体。但是,您的问题表明您的设计存在问题。这里有两个问题:

  1. 可重入互斥量是问题的征兆。您需要 100% 控制互斥锁的所有权和生命周期。如果您需要可重入互斥量,则意味着设计草率。
  2. 您描述中的线程饥饿是线程通信设计不当造成的。如果一个线程在工作期间需要一个互斥量,这意味着您实际上是在设计一个单线程系统,并且不需要任何线程。

关于c++ - 公平重入锁 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32526971/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com