boost::lock_guard 与 boost::mutex::scoped_lock

发布于 2024-08-21 23:53:33 字数 490 浏览 6 评论 0原文

boost::lock_guardboost::mutex::scoped_lock 哪个是首选?

我正在使用 Boost.Thread,希望在 C++11 线程可用时能够迁移到它。

scoped_lock 是下一个 C++ 标准的一部分吗?

相比另一种,选择其中一种有什么优势吗?


注意:我知道 scoped_lock 只是 lock_guardtypedef


编辑:我错了 scoped_lock不是 lock_guardtypedef 。它是 unique_locktypedef

Which is preferred boost::lock_guard or boost::mutex::scoped_lock?

I'm using Boost.Thread with the hope to move to C++11 threading when it becomes available.

Is scoped_lock part of the next c++ standard?

Are the any advantages to prefer one over the other?


NOTE: I'm aware that scoped_lock is just a typedef of lock_guard.


edit: I was wrong scoped_lock is not a typedef of lock_guard. It's a typedef of unique_lock.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三生一梦 2024-08-28 23:53:33

Amit 是对的:boost::mutex::scoped_lockboost::unique_locktypedef,而不是 >lock_guardscoped_lock 在 C++0x 中不可用。

除非您需要 unique_lock 的灵活性,否则我会使用 lock_guard。它更简单,更清楚地表达了将锁限制在定义的范围内的意图。

Amit is right: boost::mutex::scoped_lock is a typedef for boost::unique_lock<boost::mutex>, not lock_guard. scoped_lock is not available in C++0x.

Unless you need the flexibility of unique_lock, I would use lock_guard. It is simpler, and more clearly expresses the intent to limit the lock to a defined scope.

孤千羽 2024-08-28 23:53:33

两者差别不大。根据 Boostscoped_lock< /code> 是 unique_lock 的类型定义。 unique_locklock_guard 都实现了 RAII 风格的锁定。两者之间的区别很简单,unique_lock 有一个更复杂的接口——它允许推迟锁定并调用解锁。

Not much difference between the two. As per Boost, scoped_lock is a typedef for unique_lock<mutex>. Both of unique_lock and lock_guard implement RAII-style locking. The difference between is simply that unique_lock has a more complex interface -- it allows to defer lock and call unlock.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文