我的理解是:std::mutex
阻止其他线程,无论他们是否想要读取或写入,而boost::shared_mutex
将允许多次读取。
所以我的问题是,我是否应该总是更喜欢boost::shared_mutex
而不是普通的std::mutex
来允许并行读取的可能性?使用正常std::mutex
感觉就像我否认一些可能的读取吞吐量....?
答案 0 :(得分:7)
我不能说出他们两人之间的表现,但我的猜测是因为额外的逻辑boost::shared_mutex
可能会慢一些。除此之外,根据您拥有的读取器数量,您可能会阻止写入线程的时间超过您想要的时间,因为它必须等到所有读取访问完成后才会完成。