【发布时间】:2014-12-21 19:44:49
【问题描述】:
据我所知,在旧版本的 Boost boost::mutex 中,Windows 的实现是使用临界区完成的。但在 Boost 1.51 的最新版本中,我发现现在互斥锁实现是基于事件的。
有人知道这种变化背后的原因是什么吗?是否因为性能原因而这样做?关键部分会被弃用吗?
【问题讨论】:
-
你看过提升更新日志吗?
-
据我所知,它是为了简化和统一各种互斥体的设计:目前
mutex,timed_mutex,try_mutex- 都是使用detail::basic_timed_mutex实现的,不能用CS。 (实际上,使用 CS 并不总是最好的选择,它取决于并发场景,因此不值得为此复杂化设计。) -
您确实意识到只有 boost 的设计者才能完全回答这个问题。我们其他人只能推测......
标签: c++ windows multithreading boost