bool timed_wait(L& lock, const xtime& xt) { if (!lock) throw lock_error(); return do_timed_wait(lock.m_mutex, xt); }
bool timed_wait(L& lock, const boost::posix_time::ptime &abs_time) { if (!lock) throw lock_exception(); return do_timed_wait(abs_time, *lock.mutex()); }
bool timed_wait(L& lock, const boost::posix_time::ptime &abs_time) { if(abs_time == boost::posix_time::pos_infin){ this->wait(lock); return true; } if (!lock) throw lock_exception(); return do_timed_wait(abs_time, *lock.mutex()); }
bool timed_wait(L& lock, const boost::posix_time::ptime &abs_time, Pr pred) { if (!lock) throw lock_exception(); while (!pred()){ if (!do_timed_wait(abs_time, *lock.mutex())) return pred(); } return true; }
bool timed_wait(L& lock, const xtime& xt, Pr pred) { if (!lock) throw lock_error(); while (!pred()) { if (!do_timed_wait(lock.m_mutex, xt)) return false; } return true; }