sigslot学习
2018-01-30 14:58
148 查看
最近在学习 sigslot, Sigslot 是Sarah Thompson 设计实现的C++ 事件处理的框架,非常的轻量级,只有一个.h文件:sigslot.h, 最大限度的将事件和处理机制解耦, 并且保证了线程安全.
项目主页:http://sigslot.sourceforge.net/
GitHub: https://github.com/KubaO/sigslot
这里记录两个例子,作为对比,例子来源于官方的说明文档,稍作修改
// n1.cpp
在Linux下编译:# g++ n1.cpp -o app
运行:# ./app
—>17
—>17
// n2.cpp, 使用sigslot
编译:# g++ n2.cpp -o app
执行: #./app
—>16
—>16
发现使用sigslot后,类Light和类Switch实现了解耦合。
项目主页:http://sigslot.sourceforge.net/
GitHub: https://github.com/KubaO/sigslot
这里记录两个例子,作为对比,例子来源于官方的说明文档,稍作修改
// n1.cpp
#include <stdio.h> #include <stdio.h> class Switch { public: virtual void Clicked() = 0; }; class Light { public: void ToggleState() { printf("--->%d\n", __LINE__); } void TurnOn(); void TurnOff(); }; class ToggleSwitch : public Switch { public: ToggleSwitch(Light lp) { m_lp = lp; } virtual void Clicked() { m_lp.ToggleState(); } private: Light m_lp; }; int main(int argc, char** argv) { Light lp1, lp2; ToggleSwitch tsw1(lp1), tsw2(lp2); tsw1.Clicked(); tsw2.Clicked(); }
在Linux下编译:# g++ n1.cpp -o app
运行:# ./app
—>17
—>17
// n2.cpp, 使用sigslot
#include <stdio.h> #include <stdio.h> #include "sigslot.h" class Switch { public: sigslot::signal0<> Clicked; }; class Light : public sigslot::has_slots<> { public: void ToggleState() { printf("--->%d\n", __LINE__); } void TurnOn(); void Turnoff(); }; int main(int argc, char** argv) { Switch sw1, sw2; Light lp1, lp2; sw1.Clicked.connect(&lp1, &Light::ToggleState); sw2.Clicked.connect(&lp2, &Light::ToggleState); sw1.Clicked(); sw2.Clicked(); }
编译:# g++ n2.cpp -o app
执行: #./app
—>16
—>16
发现使用sigslot后,类Light和类Switch实现了解耦合。
相关文章推荐
- Sigslot学习
- sigslot代码学习
- C标准库学习stdio.h
- 【学习摘记】马士兵bbs改良版_课时13-14_article.jsp:最上来讲的,却是最难的
- Spring Boot学习之旅:(六)springboot 整合 redis 以及 redis 通用工具类
- numpy学习2
- Dynamic CRM 2013学习笔记(十六)用JS控制Tab可见,可用
- python爬虫学习笔记(2)-爬取知乎
- 大学里如何学习 ?(强烈推荐)
- FreeType 学习笔记
- 这样学习计算机不迷茫
- MFC学习笔记之多对话框中使用定时器
- ios学习记录 day23 UI 2
- 数据结构学习总结(持续更新)
- Python学习笔记-----Scrapy
- Pillow学习之ImageColor
- Java学习第二弹(杨辉三角)
- Java并发读书学习笔记(十一)——原子变量与非阻塞同步机制
- 用通讯组实现邮件列表:Exchange2003学习系列之九
- HDFS scalability: the limits to growth 学习笔记