use boost::condition