织梦CMS - 轻松建站从此开始!

罗索

BOOST 线程完全攻略 - 结束语

落鹤生 发布于 2010-12-21 09:48 点击:次 
全文介绍了3个boost::thread的扩展类,希望能给大家书写多线程代码带来便捷。
TAG:

全文介绍了3个boost::thread的扩展类,希望能给大家书写多线程代码带来便捷。
thread -> controlled_module_ex ->controlled_module

那么我们具体在什么情况下选用不同的扩展类呢?

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

  1. void threadCount() 
  2. int num = 0; 
  3.   for(int i=0;i<1000000;i++) 
  4.  num+=i; 
  5. cout << num << endl; 
  6. int _tmain(int argc, _TCHAR* argv[]) 
  7.    boost::thread thd(threadCount); 
  8.    thd.join(); 

2.如果你想开一个子线程,生命期很长,例如后台监控网络数据包,但是主线程要能有效的终止这个子线程,那么就要用到

controlled_module

  1. class mymonitor 
  2. public
  3.   virtual bool work() 
  4.   monitor all socket packets 
  5.   return true
  6. int _tmain(int argc, _TCHAR* argv[]) 
  7.   mymonitor m; 
  8.   m.start(); 
  9.   //........ 
  10.   m.stop(); 
  11.   return 0; 

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


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

(IamNieo)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201012/10624.html]
本文出处:CSDN博客 作者:IamNieo
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容