4

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

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

(我阅读了增强读/写锁定,但有人告诉我它可能比使用互斥锁慢 3-40 倍)

4

1 回答 1

1

一般来说,您应该使用互斥锁来保护共享数据。

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

于 2012-10-15T09:11:39.003 回答