#include <iostream> #include <windows.h> #include <boost/thread/thread.hpp> #include <boost/thread/condition.hpp> using namespace std; boost::mutex _mutex; // 互斥体 boost::condition cond; // 条件变量 boost::mutex::scoped_lock lock(_mutex); // 锁 #define MAXINDEX 10 int index = 0; void hello() // 线程 HELLO { while(true) { cout<<"Hello! I'm The Thread 1 ..."<<endl; Sleep(200); if(++index == MAXINDEX) { cout<<"Waitting For 5 Second ..."<<endl; cond.wait(lock); // 如果 index == MAXINDEX ,则线程等待,把锁lock住... } } } 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; } void weakUp() // 唤醒线程 { boost::this_thread::sleep(getNextTime(5,0)); cout<<"Hello! Thread 1 Wake Up !!!"<<endl; cond.notify_one(); // 沉睡一段时间后,唤醒等待线程.... } int main() { // 创建线程 boost::thread thrd1(&hello); boost::thread thrd2(&weakUp); // 等待线程结束 本例中线程hello 是一个死循环所以不会结束... thrd1.join(); getchar(); return 0; }