这里的 tl; dr 是指,如果您有一个非常高吞吐量的系统,没有停机时间和非常高的争用,那么如果不在其上手动构建一个优先级系统,std::shared_mutex将永远无法为您工作。boost::shared_mutex将开箱即用,尽管在某些情况下可能需要对其进行修补。我认为 std::shared_mutex的行为是一个潜在的错误,在大多数使用它的代码中都会发生。
(1) < sub > 实际使用的算法基于 OS 线程调度器。根据我的经验,当读操作饱和时,Windows 上的暂停时间(获得写锁时)要比 OSX/Linux 上的长。