boost线程
简单的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; }
posted on 2017-10-12 21:27 zhuxian2009 阅读(106) 评论(0) 编辑 收藏 举报