C++11消息总线怎么使用
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容介绍了" C++11消息总线怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是 C
千家信息网最后更新 2025年12月01日C++11消息总线怎么使用
本篇内容介绍了" C++11消息总线怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
什么是 C++11 消息总线 ?
最近在 C++ 项目中需要处理对象之间大量的消息,如果使用传统的 SendMessage 和 PostMessage 会使得对象之间的耦合程度过高,因此我们最后采用了一个基于 C++11 的消息总线库 Message Bus,它有下面的一些优点:
使用简单,发送和接收只需要一条语句,并使用
lambda来简化函数的回调可以使得模块之间高度解偶,这依赖于一个全局的
MessageBus对象支持发送自定义消息或者数据包
支持发送有参和无参消息
基本原理
你可以将 Message Bus 理解为一个全局的消息通道,你可以将自己的加上标识字的消息放到这个通道上,别的模块就可以通过这个标识字来拿到你的消息,这些都依赖与一个全局对象 MessageBus g_bus,它就充当了全局消息通道。
基本使用方法
发送和接受无参消息
发送:
// g_bus 是一个全局变量
extern MessageBus g_bus;
// 发送一个带有 `InitAll` 标识字的无参数消息
g_bus.SendReq("InitAll"); 接收:
// g_bus 是一个全局变量
extern MessageBus g_bus;
// 绑定带有 `InitAll` 标识字的消息,一般在构造函数中进行.
// 一收到消息,InitAll 函数就会被调用,使用了简单粗暴 lambda 表达式
g_bus.Attach([this](){ InitAll(); }, "InitAll");
// 解除绑定带有 `InitAll` 的消息,一般在析构函数中进行
g_bus.Remove("InitAll"); 发送和接受有参消息
发送:
// g_bus 是一个全局变量
extern MessageBus g_bus;YourType m_yourType;
// 发送一个带有 `YourType` 类型参数的有参消息
g_bus.SendReq(m_yourType, "YourType"); 接收:
// g_bus 是一个全局变量
extern MessageBus g_bus;
// 绑定带有 `YourType` 标识字的有参消息,一般在构造函数中进行.
// 一收到消息,you_function 就会被调用,
// 并且发送时候传递的 `m_yourtype` 参数传递到这里的 `your_type`,
// 最终传递到 `you_function`,是不是非常简单。
g_bus.Attach([this](const YourType& your_type){ you_function(your_type); }, "YourType");
// 解除绑定 `YourType` 标识的消息,一般在析构函数中进行
g_bus.Remove("YourType"); " C++11消息总线怎么使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
消息
全局
函数
总线
变量
对象
之间
参数
通道
内容
更多
模块
知识
支持
实用
粗暴
学有所成
接下来
优点
传统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
武汉软件开发人工费用标准
校园网络安全竞答活动
板泉服务器
网络安全逆向工程重要么
网络安全维护多项选择
简述网络安全法立法的目的是
数据库数据修改时推送数据
社交 数据库
中学生网络安全的重要性
服务器节点包括管理节点
服务器管理维护哪里学
虚拟主机怎么查看数据库
上海软件开发工程师平均薪资
监狱网络安全现状及问题存在的
数据库l
电脑谷歌浏览器连接不上服务器
zblog备份数据库位置
网络技术公司实习会计的基础内容
中国几个服务器
松江区智能软件开发项目
数据库 win7 32位
数据库从远端导入本地
校园网络安全竞答活动
mysql数据库防火墙断开
金仓数据库 知乎
尚米网络技术是正规的吗
网络技术学习励志头像
服务器可以使用电脑运算吗
数据库fname是什么意思
电脑带w的服务器