C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 线程尝试std :: lock [_unique] std :: shared_mutex可以被调用std :: lock_shared的线程饿死吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
关于std :: shared_mutex和获取unique_lock的问题.

假设有3个主题

> 2个读者(尝试lock_shared()std :: shared_muteX),和
> 1作者(试图锁定[_unique]()std :: shared_muteX)

试图锁定[_unique]()的作者是否可能会被饿死?例如:在任何时候至少有一个读者拥有std :: shared_lock,而lock [_unique]()永远不会成功.

或多或少:会在std :: shared_mutex块上锁定[_unique]()任何进一步lock_shared()的尝试吗?

(相当确定boost :: upgrade_lock可以在这里工作,但我想知道在std :: shared_mutex上是否有任何保证裸std :: unique_lock)

解决方法

该标准没有规定是否应该发生,它只说:

因此,它是由实现是否使后来的读者等待未决的编写者.

如果实现想要阻止编写器饥饿,则可能需要在线程尝试获取唯一锁时设置“写入器等待”标志,以便稍后尝试获取共享锁将阻塞,等待独特的锁定器后面.在N2406参实现中,这是state成员中的write_entered_位.

大佬总结

以上是大佬教程为你收集整理的c – 线程尝试std :: lock [_unique] std :: shared_mutex可以被调用std :: lock_shared的线程饿死吗?全部内容,希望文章能够帮你解决c – 线程尝试std :: lock [_unique] std :: shared_mutex可以被调用std :: lock_shared的线程饿死吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。