多次读取和单次写入 - 线程安全

Multiple reads and single write - threadsafe?

本文关键字:线程 安全 单次写 读取      更新时间:2023-10-16

我有一个数据结构,它有两种访问方法:query()和modify()。多个线程可以同时使用 query(),但只有一个线程可以进入 modify(),同时所有使用 query() 的线程都必须退出,然后才能在 modify() 上访问。

在C++中使此数据结构线程安全的最佳方法是什么?

(我阅读了有关提升读/写锁定的信息,但有人告诉我它可能比使用互斥锁慢 3-40 倍)

通常,您应该使用互斥锁保护共享数据。

但是,如果共享数据类型是整数,您也可以考虑使用 std::atomic ,这通常比锁定互斥锁快得多。