首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >公平可重入锁C++

公平可重入锁C++
EN

Stack Overflow用户
提问于 2015-09-11 15:26:01
回答 1查看 2.8K关注 0票数 5

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

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

我以前做过一些研究,在boost中有shared_lock,但是我不需要读/写锁。只是一个锁,这将保证每个线程都有平等的机会进入关键部分。

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2015-09-11 16:06:55

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

  1. 重新进入的互斥是问题的标志。您需要100%地控制互斥对象的所有权和生命周期。如果你需要重新进入互斥,这意味着,设计是草率的。
  2. 在您的描述中,线程饥饿是设计不当的线程通信的结果。如果线程在工作期间需要一个互斥锁,这意味着您实际上是在设计一个单线程系统,并且不需要任何线程。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32526971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档