boost::condition_variable、boost::time_wait使用方法

来源:互联网 发布:jing 软件 编辑:程序博客网 时间:2024/05/09 14:06

  boost 的线程库不能强行终止,所以通过 time_wait 可以让其自然的结束。

// BoostTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>  #include <boost/thread/thread.hpp>  #include <boost/thread/mutex.hpp>  #include <boost/thread/condition.hpp>  #include <boost/date_time/posix_time/posix_time.hpp>  using namespace std;using namespace boost;boost::mutex test_mutex;  boost::condition_variable test_condition;  //#pragma comment(lib,"../../lib/x86/boost/libboost_thread-vc100-mt-gd-1_55.lib")//#pragma comment(lib,"..//..//lib//x86//boost//libboost_thread-vc100-mt-gd-1_55.lib")////../../lib/x86/boost/libboost_thread-vc100-mt-gd-1_55.lib;../../lib/x86/boost/libboost_date_time-vc100-mt-gd-1_55.lib;../../lib/x86/boost/libboost_system-vc100-mt-gd-1_55.lib;../../lib/x86/boost/libboost_chrono-vc100-mt-gd-1_55.libvoid test(){      for (;;)       {         boost::mutex::scoped_lock lock(test_mutex);          if (test_condition.timed_wait(lock, get_system_time() + posix_time::seconds(3)))           {            cout << "成功接收到通知" << endl; //这里加个break就结束了          }        else           {            cout << "没有等待到通知" << endl;          }    }}int _tmain(int argc, _TCHAR* argv[]){    boost::thread test_thread(test);      for (;;)       {          ::system("PAUSE");          cout << "开始发送通知" << endl;          test_condition.notify_one();      }      return 0;}
0 0