2011-11-01 76 views
10

我的应用程序可能受益于使用本地解决方案中的一个boost信号库。信号与信号2

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

如果多线程不是问题,是否有什么理由比Boost.Signal更喜欢Boost.Signals2?

+1

确保你考虑[libtscb](http://www.chaoticmind.net/~hcb/projects/libtscb /) - 其[性能比较](http://www.chaoticmind.net/~hcb/projects/libtscb/doc/index.html#performance)尤为值得关注。 – ildjarn

+0

@ildjarn:不幸的是libtscb需要GCC。我不知道库的其余部分,但原子只是为GCC实现的。一旦Visual Studio获得C++ 11'std :: atomic',它可以被轻松移植。 –

+0

另一种选择是使用当前正在审查的[Boost.Atomics](http://www.chaoticmind.net/~hcb/projects/boost.atomic/doc/index.html): - ] – ildjarn

回答

9

Boost.Signals现在已经过时,并Boost.Signals2应改为使用(见v1.54 docs

+3

要引用该页面上的重要注记(为方便起见):“** Boost.Signals不再被主动维护,不要使用Boost.Signals进行新的开发(改为使用Boost.Signals2)**如果您有现有的基于Boost.Signals的代码,它将继续工作,但考虑转向Boost.Signal S2。 Signals2文档中有一个移植指南。“ – Cornstalks

+0

说实话,大多数情况下,当你开始使用一个很好的功能时,你最终会希望在比首次需要的地方更多的地方使用它。 –

5

最初,如果所有的信号和插槽都在同一个线程中,boost.signals就好了。但是,它不再被维护 - 文档建议在所有新代码中使用signals2。

+4

signals2对信号有其他变化,所以无论如何都应该考虑 –