【发布时间】:2014-08-11 10:34:29
【问题描述】:
我的理解是:std::mutex 会阻塞其他线程,无论他们想读还是写,而boost::shared_mutex 将允许多次读取。
所以我的问题是,我是否应该总是更喜欢boost::shared_mutex 而不是普通的std::mutex 以允许发生并行读取?使用普通的std::mutex 感觉就像我在否认一些可能的读取吞吐量......?
【问题讨论】:
-
即暂时使用 Boost。如果它被纳入该标准,可能会迁移到 C++14。
-
This 是相关的。简而言之,
shared_mutex的锁定成本比普通的要高,如果您的读者只锁定很短的时间,这可能会成为争论的根源。 -
@Bathsheba 不完全是一个骗局。这个问题询问是否有任何理由更喜欢普通互斥锁而不是共享互斥锁。该问题询问是否有标准化的
shared_mutex。 -
因为
std::mutex在 C++11 中是标准的,但 Boost 不是。
标签: c++ multithreading boost