首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >锁层次结构和读取器-写入器互斥

问锁层次结构和读取器-写入器互斥
EN

Stack Overflow用户
提问于 2011-05-04 23:44:34
回答 1查看 814关注 0票数 2

假设我使用锁层次结构来避免死锁。如果我使用读取器-写入器互斥锁,我应该如何考虑和使用它们?在每个读写互斥锁的层次结构中是否存在(我能想到的)不同的读锁和写锁吗?(如果是,这意味着这两个锁可以在层次结构中分配不同的级别。)使用读写互斥锁是否会在层次结构中引入死锁的可能性?(如果是,如何(如果可以)避免这种情况?)那么“可升级”锁(读取器锁可以转变为写入器锁,而无需先解锁互斥锁)呢?

是的,我已经看到了尽可能避免(特别是读取器-写入器)互斥锁的建议。这不是关于是否普遍使用它们的问题;只是假设存在一个问题,最好由读取器-写入器互斥锁来解决。同样,不要仅仅因为您通常喜欢锁层次结构而建议它们的替代方案。(但是,如果将读取器-写入器互斥锁与锁层次结构相结合确实会引入死锁的可能性,请随时建议对所使用的概念进行更改。)

知道我正在考虑使用Boost Thread库的多线程程序可能会有所帮助。读取器-写入器互斥锁类在这里称为shared_mutex;unique_lock是独占(写入器)锁;shared_lock是共享(读取器)锁;upgrade_lock是可以临时升级为写入器锁的读取器锁。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-05 11:31:45

为了进行锁排序,您必须将其视为单个锁。如果您有锁A和读写锁B,并且有两个线程执行此操作:

等待

  • 锁定A,等待读取(B)

  • 锁定写入(B),等待A

他们仍然会僵持不下。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5886151

复制
相关文章

相似问题

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