signals2 观察者模式, 解耦模块

class Button
{typedef boost::signals2::signal<void (int x, int y)> OnClick;
public:typedef OnClick::slot_type OnClickSlotType;// forward slots through Button interface to its private signalboost::signals2::connection doOnClick(const OnClickSlotType & slot);// simulate user clicking on GUI button at coordinates 52, 38void simulateClick();
private:OnClick onClick;
};boost::signals2::connection Button::doOnClick(const OnClickSlotType & slot)
{return onClick.connect(slot);
}void Button::simulateClick()
{onClick(52, 38);
}void printCoordinates(long x, long y)
{std::cout << "(" << x << ", " << y << ")n";
}
//]int main()
{Button button;button.doOnClick(&printCoordinates);//<span style="color:#FF0000;">这句。 否则就要将printCoordinates函数设置为Butoon类的成员、或者赋值给Button类的成员。</span>button.simulateClick();return 0;
}

from: http://blog.csdn.net/vagrxie/article/details/5518130

后面工作中可以尝试使用signals2.

关于coroutine,看了几篇帖子

1) coroutine是用户态的切换, 比线程切换轻量

2) 同步效率低; 异步需要N多回调,代码逻辑切成碎片;coroutine让逻辑集中、顺畅。  简单类比jmp跳转

3)stackless 与 stackful。  stackless的coroutine不能有栈变量(否则jmp回来的时候栈顶、寄存器等肯定已变了)。 stackful支持有栈变量(jmp回来会恢复现场?)

4)与异步比, 性能上有提升么?c++/boost::asio没看到有用的。 (go、lua除外)

boost signals2 coroutine相关推荐

  1. boost::signals2::trackable相关的测试程序

    boost::signals2::trackable相关的测试程序 实现功能 C++实现代码 实现功能 boost::signals2::trackable相关的测试程序 C++实现代码 #inclu ...

  2. boost::signals2模块thread_safe_signals 库替代线程模型的基本测试

    boost::signals2模块thread_safe_signals 库替代线程模型的基本测试 实现功能 C++实现代码 实现功能 boost::signals2模块thread_safe_sig ...

  3. boost::signals2::slot相关的测试程序

    boost::signals2::slot相关的测试程序 实现功能 C++实现代码 实现功能 boost::signals2::slot相关的测试程序 C++实现代码 #include <boo ...

  4. boost::signals2::signal_type相关的测试程序

    boost::signals2::signal_type相关的测试程序 实现功能 C++实现代码 实现功能 boost::signals2::signal_type相关的测试程序 C++实现代码 #i ...

  5. boost::signals2::shared_connection_block相关的测试程序

    boost::signals2::shared_connection_block相关的测试程序 实现功能 C++实现代码 实现功能 boost::signals2::shared_connection ...

  6. boost::signals2模块实现多线程信号调用基准的测试程序

    boost::signals2模块实现多线程信号调用基准的测试程序 实现功能 C++实现代码 实现功能 boost::signals2模块实现多线程信号调用基准的测试程序 C++实现代码 #inclu ...

  7. boost::signals2::deconstruct相关的测试程序

    boost::signals2::deconstruct相关的测试程序 实现功能 C++实现代码 实现功能 boost::signals2::deconstruct相关的测试程序 C++实现代码 #i ...

  8. boost::signals2模块实现连接类测试

    boost::signals2模块实现连接类测试 实现功能 C++实现代码 实现功能 boost::signals2模块实现连接类测试 C++实现代码 #include <boost/signa ...

  9. boost::signals2模块实现将参数从信号调用传递到槽的示例程序

    boost::signals2模块实现将参数从信号调用传递到槽的示例程序 实现功能 C++实现代码 实现功能 boost::signals2模块实现将参数从信号调用传递到槽的示例程序 C++实现代码 ...

最新文章

  1. 【云图】如何制作附近实体店的地图?-微信微博支付宝
  2. logisim设计alu设计报告_【新】PowerBI 报告设计思想 结构布局篇
  3. seaborn.distplot()
  4. 2006年清华大学计算机研究生机试真题
  5. Titanic: Machine Learning from Disaster-kaggle入门赛-学习笔记
  6. java当中各种流的应用场景_Java中有哪些流,常用流有哪些并有何特点和使用场景 NIO流,特性及使用时注意的事项 IO与NIO区别...
  7. [转]window.location方法获取URL及window.location.assign(url)和replace(url)区别
  8. python做服务器需要什么模块_用Python自带的包建立简单的web服务器
  9. 王牌战争文明重启服务器维护中,王牌战争文明重启常见问题大全 游戏问题QA...
  10. Ubuntu设置Root用户开机启动
  11. BN、CBN、CmBN 的对比与总结
  12. 多视图几何的数学基础知识的掌握(2)--李群李代数
  13. 改良型新药之详细分类
  14. CSS峰会亮点直击,大咖共议产业上云的安全“最优解”
  15. 【懒人必备】一款Android自动设置代理神器
  16. MySQL索引优化实践
  17. 离线抓取开心网和墨迹天气数据(pcap包,linux平台)
  18. NLP自然语言处理系列——LDA主题词模型探析
  19. 友链(欢迎加友链!)
  20. 南昌大学计算机学硕调剂专硕,最新!2021年考研调剂信息!

热门文章

  1. 如何评价rcnn、fast-rcnn和faster-rcnn这一系列方法?
  2. Java并发编程--ReentrantReadWriteLock
  3. Vue.js 组件注册
  4. 涨姿势!北京地铁原来是16条旅游专线
  5. github上可供新手阅读和玩耍的java项目有哪些??
  6. 2012年寒假•青年基金【修改后发表】
  7. 统计学习方法——CART, Bagging, Random Forest, Boosting
  8. 简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他
  9. 人工智能取代医生AI画出鼻咽癌放疗靶区,准确性与医生相当
  10. 自定义Xcode 文件头部的注释