多次读取和单次写入 - 线程安全
Multiple reads and single write - threadsafe?
我有一个数据结构,它有两种访问方法:query()和modify()。多个线程可以同时使用 query(),但只有一个线程可以进入 modify(),同时所有使用 query() 的线程都必须退出,然后才能在 modify() 上访问。
在C++中使此数据结构线程安全的最佳方法是什么?
(我阅读了有关提升读/写锁定的信息,但有人告诉我它可能比使用互斥锁慢 3-40 倍)
通常,您应该使用互斥锁保护共享数据。
但是,如果共享数据类型是整数,您也可以考虑使用 std::atomic
,这通常比锁定互斥锁快得多。
相关文章:
- 如何将元素添加到数组的线程安全函数?
- C++中的线程安全删除
- 在std::thread中,joinable()然后join()线程安全吗
- 在c++队列中使用pop和visit实现线程安全
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- 全局变量 多读取器 一个写入器多线程安全?
- 共享队列的线程安全
- boost::文件系统::recursive_directory_iterator多线程安全
- 以线程安全的方式转换 C/C++ 中时区名称字符串的时区偏移量
- 线程安全运算符<<
- 如何使缓存线程安全
- C++线程安全:如果只有一个线程可以写入非原子变量,但多个线程从中读取. 会遇到问题吗?
- 提升精神 V2 Qi 语法线程安全吗?
- asio 链对象线程安全吗?
- 线程安全队列 c++
- 提供对不同类型的数据(建议、代码审查)的线程安全访问的类
- 如何以线程安全的方式更改目录?
- 线程安全的引用计数队列C++
- 析构函数和线程安全
- 适用于大型数组的无复制线程安全环形缓冲区