【问题标题】:Signals vs Signals2信号与信号2
【发布时间】:2011-12-19 16:07:47
【问题描述】:

我的应用程序可能受益于使用 boost 的信号库之一而不是自主开发的解决方案。

应用程序是多线程的,但进行信号处理的部分是单线程的。

如果多线程不是问题,是否有任何理由更喜欢 Boost.Signals2 而不是 Boost.Signal?

【问题讨论】:

  • 确保你也考虑libtscb——它的performance comparisons特别值得注意。
  • @ildjarn:不幸的是,libtscb 需要 GCC。我不知道库的其余部分,但原子仅针对 GCC 实现。一旦 Visual Studio 获得 C++11 std::atomic,它就可以轻松移植。
  • 另一种选择是使用当前正在审核的Boost.Atomics :-]
  • 另外,如果您还没有看到,Signal2 文档已经列出了 Signals 的主要更改,包括与线程安全无关的增强或删除功能:Signals2 API Changes
  • 另一个需要考虑的库可能是 Sarah Thompson 的 Sigslots:sigslot.sourceforge.net

标签: c++ boost signals-slots boost-signals


【解决方案1】:

最初,如果所有信号和槽都在同一个线程中,boost.signals 就可以了。然而,它不再被维护——文档建议在所有新代码中使用信号2。

【讨论】:

  • signals2 对信号有其他变化,所以无论如何都应该考虑
【解决方案2】:

Boost.Signals 现已弃用,应使用 Boost.Signals2 代替(请参阅v1.54 docs

【讨论】:

  • 引用该页面上的重要说明(为方便起见):“Boost.Signals 不再被积极维护。请勿将 Boost.Signals 用于新开发(请改用 Boost.Signals2 )。 如果您有现有的基于 Boost.Signals 的代码,它将继续工作,但请考虑迁移到 Boost.Signals2。Signals2 文档中有移植指南。"
  • 老实说,大多数时候,当您开始使用一个不错的功能时,您最终会希望在最初需要的地方之外的其他地方使用它。
猜你喜欢
  • 2015-08-19
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多