一、基本使用头文件 <boost/thread/thread.hpp>
1、threadthread的构造形式为explicit thread(const boost::function0<void>&);如果你对boost::function不熟,那么我听我简短的介绍一下:boost::function0<void>可以简单看为:一个无返回(返回void),无参数的函数。这里的函数也可以是类重载operator()构成的函数。
举例来说如下形都可以转化为function0<void>。
只要带参数构造一个thread实例那么就是构建了一个线程,相当的方便快捷。于是有了我们第一个例子:例一:
运行后发生了什么?线程起动了,但一闪而过,结果都没能输出全就运行结束了。那该怎么办呢?答:使用thread::join,当join后的thread在该线程未执行结束会一直处于阻塞状态。
改下例子中主程序main为
看到结果了,但似乎线程有点不同步,呃。。暂时放在一旁吧。什么?你觉得void(void)的函数连变量入口都没,传值不方便?其实你错了,当你用会了boost::bind,会发现函数有多少参数都不是问题,都可以轻松bind为void(void)形式。我几乎可以说boost::thread最基本的的使用就是boost::thread+boost::function+boost::bind的结合。
2、thread_group大家一定注意到除了thread还有thread_group,顾名思义,thread_group就是thread的group,看看main主程序有点烦琐,引入thread_group看看效果先认识下thread_group的成员函数:
很清晰,改造开始
运行,结果完全一样。
注意:当thread_group析构时会自动delete已加入的thread例
若要手动管理,可改为:
好了,