我有一个线程不断读取全局变量,还有另一个线程偶尔更新(写入)全局变量。 最好的方法是什么?成本是多少? 如果我不在读取端锁定并在写入端锁定,是否有可能?
谢谢
最佳答案
锁保护资源/变量,如果读者使用它,作者也应该使用。如果全局变量是原始类型,我建议您使用 std::atomic<> 将其设为原子类型。如果它是一个复杂的类型,比如一个类,您应该使用锁来确保您的读者读取一致的状态。
在您可能认为争用较少的情况下,我在自旋锁方面取得了很大成功。但如果你的读者阅读率很高,而且你有很多。应该使用互斥锁或原子锁。
关于c++ - 读取器/写入器锁 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215985/