简单的boost线程demo程序,包括创建一个无参数线程,创建一个有参数的线程,对线程加锁,线程休眠等;
#include <iostream>
#include <boost/bind.hpp>
#include <boost/thread.hpp>
#include <boost/thread/mutex.hpp>
using namespace std;
//线程休眠,毫秒级
#define BOOST_SLEEP(n) boost::thread::sleep(boost::get_system_time()+boost::posix_time::millisec(n))
//boost::mutex g_mux_Lock;//同线程,两次加锁,死锁
boost::recursive_mutex g_mux_Lock;//递归锁,可以在同线程中多次加锁,但是要解锁相同的次数
int g_nCount=0;
void myThread1()
{
while(g_nCount<100)
{
g_mux_Lock.lock();
cout<<"myThread1 ............. g_nCount="<<g_nCount++<<endl;
g_mux_Lock.unlock();
BOOST_SLEEP(500);
}
}
void myThread2(const char *pParam)
{
while(1)
{
g_mux_Lock.lock();
cout<<"myThread2 ************* pParam="<<pParam<<" g_nCount="<<g_nCount++<<endl;
g_mux_Lock.unlock();
BOOST_SLEEP(500);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
boost::thread th1(&myThread1);
boost::thread th2(boost::bind(myThread2,"hello"));
th1.join();//主线程被阻塞,直到th1线程退出
//th1.timed_join(boost::posix_time::seconds(5));//主线程被阻塞指定的时间,超时后继续执行后面代码
cout<<"th1 FINISH !!!!!!!!!!!"<<endl;
th2.join();
cout<<"th2 FINISH !!!!!!!!!!!"<<endl;
return 0;
}