#include <iostream>
#include <fstream>
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/condition.hpp>
void wait(int seconds)
{
boost::this_thread::sleep(boost::posix_time::seconds(seconds));
}
boost::mutex mutex;
boost::condition_variable_any cond;
void test_wait()
{
while(true)
{
boost::mutex::scoped_lock lock(mutex);
cond.wait(mutex);
std::cout<<boost::this_thread::get_id()<<" 收到notify!\n";
}
}
void test_timed_wait()
{
while(true)
{
boost::mutex::scoped_lock lock(mutex);
if ( cond.timed_wait(lock, boost::get_system_time() + boost::posix_time::seconds(3)) )
{
std::cout<<" 收到notify!\n";;
}
else {
std::cout<<"超时, 没有收到Notify!\n";
}
}
}
void test_thread_wait()
{
boost::thread t1(boost::bind(&wait,2));
boost::thread t2(test_wait);
boost::thread t3(test_wait);
boost::thread t4(test_wait);
t1.join(); //test_thread_wait()函数所在的线程暂停,直到t1线程执行完毕
while (true)
{
//wait(1);
system("pause");
cond.notify_one();
}
}
void test_thread_timed_wait()
{
boost::thread t1(test_timed_wait);
while ( true)
{
system("pause");
cond.notify_one();
}
}
void main ()
{
test_thread_wait();
test_thread_timed_wait();
}