全文介绍了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类了
阅读(1334) | 评论(0) | 转发(0) |