|
Boost Users : |
Subject: [Boost-users] timed waits
From: Just C (justachap_at_[hidden])
Date: 2010-03-26 05:13:21
I was looking at this article about conditon_variables.
http://www.justsoftwaresolutions.co.uk/threading/condition-variable-spurious-wakes.html
For a timeout, the article has the following sample program with condition
variables.
template<typename Duration>
bool timed_wait_and_pop(Data& popped_value,
Duration const& wait_duration)
{
boost::system_time const
timeout=boost::get_system_time()+wait_duration;
boost::mutex::scoped_lock lock(the_mutex);
while(the_queue.empty())
{
if(!the_condition_variable.timed_wait(lock,timeout))
return false;
}
popped_value=the_queue.front();
the_queue.pop();
return true;
}
However, shouldn't this program instead start with
boost::mutex::scoped_lock lock(the_mutex, timeout);
if(!lock.owns())
return false;
i.e. shouldn't it also take care of getting stuck while locking the mutex.
i.e. if the timeout is 5 seconds & the getting the lock itself takes 10
seconds,
then, the earlier the program will return is 10+ seconds.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net