信号槽是Qt框架中一个重要的部分,主要用来解耦一组互相协作的类,使用起来非常方便。项目中有同事引入了第三方的信号槽机制,其实Boost本身就有信号/槽,而且Boost的模块相对来说更稳定。
signals2基于Boost里另一个库signals实现了线程安全的观察者模式。signal中一个比较重要的操作函数是connect,它把插槽连接到信号上;插槽可以是任意可调用对象,包括函数指针、函数对象,以及他们的bind/lambda表达式和function对象。connect函数将返回一个connection对象,表示了信号和插槽之间的连接关系,connection对象可以更灵活的处理信号与槽函数的连接、断开等关系。