`
helpbs
  • 浏览: 1158917 次
文章分类
社区版块
存档分类
最新评论

BOOST 线程完全攻略 - 结束语

 
阅读更多

转自:http://blog.csdn.net/IamNieo/archive/2008/09/10/2910658.aspx

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

thread ->controlled_module_ex ->controlled_module
那么我们具体在什么情况下选用不同的扩展类呢?
1.如果你只想创建一个生命期比较短的子线程,做一件独立事务,例如统计什么的,那么不需要用到扩展类
  1. voidthreadCount()
  2. {
  3. intnum=0;
  4. for(inti=0;i<1000000;i++)
  5. {
  6. num+=i;
  7. }
  8. cout<<num<<endl;
  9. }
  10. int_tmain(intargc,_TCHAR*argv[])
  11. {
  12. boost::threadthd(threadCount);
  13. thd.join();
  14. }
2.如果你想开一个子线程,生命期很长,例如后台监控网络数据包,但是主线程要能有效的终止这个子线程,那么就要用到
controlled_module
  1. classmymonitor
  2. {
  3. public:
  4. virtualboolwork()
  5. {
  6. monitorallsocketpackets
  7. returntrue;
  8. }
  9. }
  10. int_tmain(intargc,_TCHAR*argv[])
  11. {
  12. mymonitorm;
  13. m.start();
  14. //........
  15. m.stop();
  16. return0;
  17. }
3.如果子线程不光生命周期长,而且与主线程经常有消息通讯,或数据传递等等,那么就要用到controlled_module_ex,例如TCP监听服务子线程,controlled_module_ex是最常用到的一个类,至于完整的范例,例如如何实现tcpserver,有时间我会把代码也贴出来。
4.如果子线程是一个有串行事务逻辑的,例如第一步登录银行系统,第二部破解系统密码,第三部拿钱 开个玩笑:),那么就要用到thread类了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics