【发布时间】:2012-12-27 17:24:33
【问题描述】:
boost::shared_mutex 是否有 C++11 等效项。或者在 C++11 中处理多读/单写情况的另一种解决方案?
【问题讨论】:
-
boost::shared_mutex被标准化委员会否决。这可能是相关的:permalink.gmane.org/gmane.comp.lib.boost.devel/211180 -
@AndyProwl:我支持 Nawaz。
-
同意共享锁定不是一个很好的解决方案,因为您可以持有一小段时间的锁。但这并不总是可能的。如果是这样,共享锁定就不会在这么多库和语言中如此普遍。
-
如果我们选边站,我会支持霍华德。特别是,我发现“在持有锁时进行耗时的操作是一种设计气味”,完全没有说服力。要么“设计气味”意味着“绝对不能发生的事情”,在这种情况下,它肯定是错误的 IME(考虑到“足以避免严重的缓存乒乓”不是 很多消费),或者“设计气味”意味着“一个令人担忧的迹象,表明可能存在问题,但在某些情况下仍然是必要的”,在这种情况下,为什么要通过从提案中删除 rwlocks 来撤回对这些情况的支持?跨度>
-
@Nawaz:但这只是一个论点,即存在 rwlock 并不比互斥锁更好的情况(Willams 在其他地方解释了为什么有时情况更糟)。这是真的,但这不是删除 rwlocks 的好理由。您不妨删除
vector,因为有时deque更好。我并不是说委员会没有充分的理由不包括shared_mutex,只是这个解释不是(我希望)它的全部。有时您的锁定操作比缓存刷新慢一个数量级,因此 not 由 rwlock 序列化。不会让它们“臭”。