【发布时间】:2015-11-03 11:44:22
【问题描述】:
根据this question 的答案boost::mutex 的最新版本使用原子操作和Win32 事件来阻塞等待而不是临界区。为什么?背后的原因是什么?
【问题讨论】:
-
我猜是为了增强便携性?
-
@David Haim Win32 在您看来,与关键部分相比,Win32 事件不是特定于平台的东西?
-
我猜他们更喜欢平台事件+独立的原子操作而不是完全的平台实现
-
我怀疑你会在这里得到更好的答案,问开发人员在他们挂起的一些与提升相关的资源上做了这件事。这个问题仍然很有趣,因为将关键会话替换为事件看起来不太合理,除非 boost 旨在用于 ring0 代码。
-
@FrozenHeart 没有人说事件与平台无关。大卫说“增强可移植性”(图书馆)。该库将希望在所有操作系统上保证类似的语义。这可能是一个因素。不是我说“可能”,因为我不知道。所以,“增强可移植性”是关于
boost::mutex的行为,而不是关于代码是否可以在平台上编译。
标签: c++ boost boost-thread