【发布时间】:2019-08-29 09:18:20
【问题描述】:
从 C++17(C++14) 开始,我们有了 std::shared_(timed_)mutex 类。 很长一段时间以来,Qt 都有一个类似的类 QReadWriteLock。 QReadWriteLock 的documentation 说:
为了确保作者不会被读者永远屏蔽,读者 如果有阻塞,尝试获取锁将不会成功 writer 等待访问,即使当前只访问了锁 由其他读者。此外,如果锁被写入者访问并且 另一位作家进来,该作家将优先于任何 可能也在等待的读者。
由于这当然是一个合理的财产,我想知道是否 std::shared_mutex 和 std::shared_timed_mutex 的行为方式相似吗?
【问题讨论】:
-
呵呵,是什么让你觉得我想暗示问题的意思不明确?无论如何我同意我的回答是无意义的并删除它
-
cpp 参考没有说明任何内容——只要它在这方面与标准没有区别(没有查过),显然实现是未指定的。所以每个编译器都可能按照它想要的方式处理它。我个人会按照先到先得的方式实施,这对我来说是最自然的......
-
在shared_mutex 和shared_timed_mutex 的文档中都没有提到读/写优先于锁定。检查这一点的唯一方法是实现的源代码。
-
@Tony 好吧,也可以编写一个小测试程序。但两者都只会显示 your 编译器的实现。其他人可能会有所不同...
-
@Aconcagua 确实如此。
标签: c++ multithreading