c++ - 读取器/写入器锁 (c++)

标签 c++ locking mutex

我有一个线程不断读取全局变量,还有另一个线程偶尔更新(写入)全局变量。 最好的方法是什么?成本是多少? 如果我不在读取端锁定并在写入端锁定,是否有可能?

谢谢

最佳答案

锁保护资源/变量,如果读者使用它,作者也应该使用。如果全局变量是原始类型,我建议您使用 std::atomic<> 将其设为原子类型。如果它是一个复杂的类型,比如一个类,您应该使用锁来确保您的读者读取一致的状态。

在您可能认为争用较少的情况下,我在自旋锁方面取得了很大成功。但如果你的读者阅读率很高,而且你有很多。应该使用互斥锁或原子锁。

关于c++ - 读取器/写入器锁 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215985/

相关文章:

c - 使用flock, open and close file实现多读单写锁

mysql - 如何在 Mutex.synchronize 中获取局部变量值?

python - 有哪些进行机器间锁定的好方法?

c++ - 使用 std::try_to_lock 的意外行为

c++ - Havok - 你能在运行时改变对象的颜色吗?

c++ - iphone c++ 上的静态数据

c++ - 如何将文本文件读入类的 vector

C++ 打印动态字符串数组错误

windows - Win32 Event 对象是递归互斥体吗?

java - ReentrantLock 用例