转自:http://blog.csdn.net/IamNieo/archive/2008/09/10/2910658.aspx
全文介绍了3个boost::thread的扩展类,希望能给大家书写多线程代码带来便捷。
thread ->controlled_module_ex ->controlled_module
那么我们具体在什么情况下选用不同的扩展类呢?
1.如果你只想创建一个生命期比较短的子线程,做一件独立事务,例如统计什么的,那么不需要用到扩展类
-
voidthreadCount()
- {
-
intnum=0;
-
for(inti=0;i<1000000;i++)
- {
- num+=i;
- }
- cout<<num<<endl;
- }
-
int_tmain(intargc,_TCHAR*argv[])
- {
- boost::threadthd(threadCount);
- thd.join();
- }
2.如果你想开一个子线程,生命期很长,例如后台监控网络数据包,但是主线程要能有效的终止这个子线程,那么就要用到
controlled_module
-
classmymonitor
- {
-
public:
-
virtualboolwork()
- {
- monitorallsocketpackets
-
returntrue;
- }
- }
-
int_tmain(intargc,_TCHAR*argv[])
- {
- mymonitorm;
- m.start();
-
- m.stop();
-
return0;
- }
3.如果子线程不光生命周期长,而且与主线程经常有消息通讯,或数据传递等等,那么就要用到controlled_module_ex,例如TCP监听服务子线程,controlled_module_ex是最常用到的一个类,至于完整的范例,例如如何实现tcpserver,有时间我会把代码也贴出来。
4.如果子线程是一个有串行事务逻辑的,例如第一步登录银行系统,第二部破解系统密码,第三部拿钱 开个玩笑:),那么就要用到thread类了
分享到:
相关推荐
boost159-locale-1.59.0-2.el7.x86_64.rpm
boost159-openmpi-python-1.59.0-2.el7.1.x86_64.rpm
boost159-filesystem-1.59.0-2.el7.x86_64.rpm
boost159-regex-1.59.0-2.el7.1.x86_64.rpm
matlab 2014b 破解缺少dll,boost_date_time-vc100-mt-1_49.dll,以及boost_filesystem-vc100-mt-1_49.dll
boost159-1.59.0-2.el7.x86_64.rpm
boost代码----------
boost159-program-options-1.59.0-2.el7.x86_64.rpm
boost----mysql connector c++ for visual studio 2008
boost159-atomic-1.59.0-2.el7.x86_64.rpm
基于Buck_Boost的AC--AC变换器设计方案pdf,基于BuckBoost的ACAC变换器设计.pdf
boost线程指南手册。Boost 1.35.0的中文版。
matlab 2016a 由于找不到 boost_iostreams-vc120-mt-1_56.dll,无法继续执行代码。重新安装程序可能会解决此问题。
离线安装包,亲测可用
《xapp1206-boost-sw-performance-zynq7soc-w-neon.pdf》 xilinx开发手册,指导手册.官方文档
boost159-build-1.59.0-2.el7.noarch.rpm
boost159-filesystem-1.59.0-2.el7.1.x86_64.rpm
离线安装包,测试可用
boost159-iostreams-1.59.0-2.el7.x86_64.rpm
离线安装包,亲测可用