问题 信号与信号2


我的应用程序可能会受益于在本土解决方案中使用boost的信号库之一。

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

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


9499
2017-11-01 16:52


起源

一定要考虑 libtscb 同样 - 它 性能比较 尤其值得注意。 - ildjarn
@ildjarn:遗憾的是libtscb需要GCC。我不知道库的其余部分,但原子只适用于GCC。一旦Visual Studio获得C ++ 11 std::atomic 它可以被轻易移植。 - deft_code
另一种选择是使用当前未经审查的 Boost.Atomics : - ] - ildjarn
此外,如果您还没有看到它,Signal2文档已经列出了信号的主要更改,包括与线程安全无关的增强或删除功能: Signals2 API更改 - ildjarn
另一个需要考虑的图书馆可能是Sarah Thompson的Sigslots: sigslot.sourceforge.net - Tomas Andrle


答案:


现在不推荐使用Boost.Signals,而应该使用Boost.Signals2(参见 v1.54 docs


9
2017-08-23 22:34



引用该页面上的重要说明(为方便起见):“Boost.Signals不再被积极维护。不要将Boost.Signals用于新开发(改为使用Boost.Signals2)。 如果您有基于Boost.Signals的代码,它将继续工作,但请考虑转移到Boost.Signals2。 Signals2文档中有一个移植指南。“ - Cornstalks
说实话,大多数时候,当你开始使用一个不错的功能时,你最终会想要在其他地方使用它,而不是最初想要的地方。 - Alexandre Vaillancourt


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


5
2017-11-01 18:17



signals2对信号有其他变化,因此无论如何都应该考虑 - the.malkolm