Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

第35章 Boost.Signals2

Douglas Gregor

Frank Mori Hess

根据 Boost 软件许可证,版本 1.0 分发。(请参阅随附文件 LICENSE_1_0.txt 或访问 https://boost.ac.cn/LICENSE_1_0.txt 获取副本)

目录

引言
Signals2
教程
如何阅读本教程
你好,世界!(初学者)
调用多个槽
向槽传递值以及从槽返回值
连接管理
示例:文档-视图
允许槽访问其连接(高级)
更改信号的 互斥锁 类型(高级)
链接 Signals2 库
示例程序
其他教程示例
文档-视图
使用 deconstruct() 的后构造函数和前析构函数
参考
头文件 <boost/signals2.hpp>
头文件 <boost/signals2/connection.hpp>
头文件 <boost/signals2/deconstruct.hpp>
头文件 <boost/signals2/dummy_mutex.hpp>
头文件 <boost/signals2/last_value.hpp>
头文件 <boost/signals2/mutex.hpp>
头文件 <boost/signals2/optional_last_value.hpp>
头文件 <boost/signals2/shared_connection_block.hpp>
头文件 <boost/signals2/signal.hpp>
头文件 <boost/signals2/signal_base.hpp>
头文件 <boost/signals2/signal_type.hpp>
头文件 <boost/signals2/slot.hpp>
头文件 <boost/signals2/slot_base.hpp>
头文件 <boost/signals2/trackable.hpp>
线程安全
引言
信号和组合器
连接和其他类
常见问题解答
设计原理
用户级连接管理
自动连接管理
optional_last_value 作为默认组合器
组合器接口
连接接口:+= 运算符
Signals2 互斥锁类
与其他信号/槽实现的比较
Signals2 API 变更
从 Boost.Signals 迁移到 Boost.Signals2
Signals2 API 开发
测试套件
验收测试

引言

Boost.Signals2 库是一个托管信号和槽系统的实现。信号表示具有多个目标的回调,在类似系统中也称为发布者或事件。信号连接到一组槽,这些槽是回调接收器(也称为事件目标或订阅者),当信号“发出”时,它们会被调用。

信号和槽是托管的,因为信号和槽(或者更准确地说,作为槽的一部分出现的对象)可以跟踪连接,并且能够在其中任何一个被销毁时自动断开信号/槽连接。这使用户能够建立信号/槽连接,而无需花费大量精力来管理这些连接的生命周期以及所有相关对象的生命周期。

当信号连接到多个槽时,存在关于槽的返回值与信号的返回值之间关系的问题。Boost.Signals2 允许用户指定组合多个返回值的方式。

Signals2

本文档描述了原始 Boost.Signals 库的线程安全变体。为了支持线程安全,接口进行了一些更改,主要是在自动连接管理方面。此实现由 Frank Mori Hess 编写。还要感谢 Timmo Stange、Peter Dimov 和 Tony Van Eerd 的想法和反馈,以及 Douglas Gregor 编写的原始版本 Boost.Signals,这项工作基于此版本。


PrevUpHomeNext