Boost线程学习简记
头文件
#include <boost/thread.hpp>
创建线程
boost::thread是线程类,创建线程非常简单,只需要创建一个thread对象,并把线程工作函数作为参数传给构造参数。
void output()
{
std::cout<<"output"<<std::endl;
}
…
boost::thread t(output);
传递参数
如果我们的工作函数需要参数怎么办呢?
void output2(int v)
{
std::cout<<"output : "<<v<<std::endl;
}
…
boost::thread t(output2,4);
如果我们的线程函数有多个参数,不论什么类型,都写成如下形式(只要不超过十个)
boost::thread t(fun,arg1,arg2,…);
合并到主线程
t.join();
等待线程函数执行完毕
Sleep函数
boost::this_thread::sleep()
这里的sleep()函数并不是休眠多久的意思,而是睡眠到什么时候。
所以如果我们想要他休眠一秒钟,就要先计算一秒钟之后的时间是多少然后传给sleep
//计算出sec+0.0000000001*nsec秒后的时间
boost::xtime getNextTime(int sec,int nsec)
{
boost::xtime t;
boost::xtime_get(&t, boost::TIME_UTC);
t.sec += sec;
t.nsec += nsec;
return t;
}
…
boost::this_thread::sleep(getNextTime(1,0));