hau*_*ron 10 c++ multithreading mutex c++11 c++14
关于std::shared_mutex和获得的问题unique_lock.
假设有3个主题:
lock_shared()的std::shared_mutex),和lock[_unique]()的std::shared_mutex)这位作家是否有可能lock[_unique]()被迫饿死?例如:在任何时候至少有一个读者拥有一个std::shared_lock,并且lock[_unique]()永远不会成功.
更多或更少:将lock[_unique]()一对std::shared_mutex块中的任何企图进一步lock_shared()呢?
(相当肯定boost::upgrade_lock可以在这里工作,但我想知道是否有任何保证裸露std::unique_locka std::shared_mutex)
更多或更少:将
lock[_unique]()一对std::shared_mutex块中的任何企图进一步lock_shared()呢?
该标准没有规定是否应该发生,它只说:
效果:阻止调用线程,直到可以为调用线程获取互斥锁的共享所有权.
所以它是由实现是否使后来的读者等待未决的作者.
如果实现想要阻止编写器饥饿,则可能需要在线程尝试获取唯一锁时设置"写入器等待"标志,以便稍后尝试获取共享锁将阻塞,等待独特的锁定器后面.在N2406参考实现中,这是成员中的write_entered_位state.
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |