summaryrefslogtreecommitdiff
path: root/boost/thread/win32/condition_variable.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/thread/win32/condition_variable.hpp')
-rw-r--r--boost/thread/win32/condition_variable.hpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/boost/thread/win32/condition_variable.hpp b/boost/thread/win32/condition_variable.hpp
index 14c23ce0e2..23e9e44484 100644
--- a/boost/thread/win32/condition_variable.hpp
+++ b/boost/thread/win32/condition_variable.hpp
@@ -339,8 +339,8 @@ namespace boost
{
if (wait_duration.is_pos_infinity())
{
- wait(m); // or do_wait(m,detail::timeout::sentinel());
- return true;
+ wait(m); // or do_wait(m,detail::timeout::sentinel());
+ return true;
}
if (wait_duration.is_special())
{
@@ -362,6 +362,18 @@ namespace boost
template<typename duration_type,typename predicate_type>
bool timed_wait(unique_lock<mutex>& m,duration_type const& wait_duration,predicate_type pred)
{
+ if (wait_duration.is_pos_infinity())
+ {
+ while (!pred())
+ {
+ wait(m); // or do_wait(m,detail::timeout::sentinel());
+ }
+ return true;
+ }
+ if (wait_duration.is_special())
+ {
+ return pred();
+ }
return do_wait(m,wait_duration.total_milliseconds(),pred);
}
#endif