Boost库——signals2的用法总结
来源:互联网 发布:霍金的宇宙知乎 编辑:程序博客网 时间:2024/05/29 04:19
signals2基于boost的另一个库signals,实现了线程安全的观察者模式。在signals2库中,观察值模式被称为信号/槽(signals and slots),它是一种函数回调机制,一个信号关联了多个插槽,当信号发出去时,所有关联它的插槽都会被调用。许多成熟的软件系统都用到了这种信号/槽机制(另一个常用的是事件处理机制:event / event handler),它可以很好的解耦一组互相协作的类,有的语言甚至直接内建了对它的支持(如C#),signals2以库的形式为C++增加了这个重要的功能。signals2库位于名字空间Boost::signals2,为了使用signals2组件,需要包含头文件<boost/signals2.hpp>,即:
#include <boost/signals2.hpp>
using namespace boost;
与signals的区别:
signals是Boost库中另一个信号/插槽库,实际上signals2的实现是基于signals的。signals2与signals最大的区别是具有线程安全,能够用于多线程环境,而且不需要编译就可以使用。signals2在结构、接口、设计原理等许多方面都模仿了signals,但也有一些很多变化,例如默认信号调用返回是一个optional对象、combiner()函数改为set_combiner()、connection对象不再拥有block()方法等等。
与C#的区别:
signals2中的信号/插槽机制原理上类似于C#语言的event/delegate机制,但是C#的delegate的功能要比signals2弱,它要求精确的类型匹配,也没有合并器的概念,只能返回一个结果。delegate使用operator+=来连接event与delegate,signals2则使用connect()函数。这是因为signals2在设计时认为operator+=并没有带来太多的好处,反而会导致连续使用+=连接、operator-=等其他语义问题。
- Boost库——signals2的用法总结
- Boost Signals2 基本用法
- boost------signals2的使用
- BOOST::Signals2 学习小游戏—— 星座加油站
- 使用 boost::signals2 的智能连接管理
- BOOST::Signals2 / “观察者模式” 趣味分析——Eric要参加刘德华的演唱会却不知道时间,怎么办?
- Boost::Signals2 学习
- Boost::Signals2 学习
- boost signals2 coroutine
- Boost Signals2 Connection
- Boost信号/槽signals2
- 【Boost】boost库asio详解6——boost::asio::error的用法浅析
- 【Boost】boost库asio详解6——boost::asio::error的用法浅析
- boost------signals2的使用1(Boost程序库完全开发指南)读书笔记
- boost------signals2的使用2(Boost程序库完全开发指南)读书笔记
- boost------signals2的使用1(Boost程序库完全开发指南)读书笔记
- boost库的用法
- boost库asio详解6——boost::asio::error的用法浅析
- oracle---function
- [leetcode] 47. Permutations II
- 集训第十八天(2017/8/17)看树状数组+第一次组队打比赛
- Banner(图片轮播)
- Eclipse项目如何切换成AS项目
- Boost库——signals2的用法总结
- HLS中SVD解最小二乘
- HDU 1061 Rightmost Digit
- hdu 6143 Killer Names 第二类斯特灵数 组合数学
- LeetCode-142 Linked List Cycle II
- Linux下HOOK动态链接库中API的方法
- spring
- lua读取CSV文件
- 《软件架构师的12项修炼》学习心得(二)