• BOOST 线程完全攻略


     modulethread扩展多线程破解通讯

    全文介绍了3个boost::thread的扩展类,希望能给大家书写多线程代码带来便捷。 thread -> controlled_module_ex ->controlled_module 那么我们具体在什么情况下选用不同的扩展类呢?

    1.如果你只想创建一个生命期比较短的子线程,做一件独立事务,例如统计什么的,那么不需要用到扩展类

    void threadCount() { int num = 0; for(int i=0;i<1000000;i++) { num+=i; } cout << num << endl; } int _tmain(int argc, _TCHAR* argv[]) { boost::thread thd(threadCount); thd.join(); }

    2.如果你想开一个子线程,生命期很长,例如后台监控网络数据包,但是主线程要能有效的终止这个子线程,那么就要用到 controlled_module class mymonitor { public: virtual bool work() { monitor all socket packets return true; } } int _tmain(int argc, _TCHAR* argv[]) { mymonitor m; m.start(); //........ m.stop(); return 0; }

    3.如果子线程不光生命周期长,而且与主线程经常有消息通讯,或数据传递等等,那么就要用到controlled_module_ex,例如TCP监听服务子线程,controlled_module_ex是最常用到的一个类,至于完整的范例,例如如何实现tcpserver,有时间我会把代码也贴出来。

    4.如果子线程是一个有串行事务逻辑的,例如第一步登录银行系统,第二部破解系统密码,第三部拿钱 开个玩笑:),那么就要用到thread类了

  • 相关阅读:
    php图片水印添加,压缩,剪切的封装类
    使用观察者模式处理异常信息
    php中的错误级别
    php 递归函数的三种实现方式
    php利用递归函数实现无限级分类
    利用http协议发布博客园博文评论
    结合php ob函数理解缓冲机制
    php 正则表达式捕获组与非捕获组
    php 利用socket发送GET,POST请求
    php mysqli扩展之预处理
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4447766.html
Copyright © 2020-2023  润新知