diff options
| author | Kevin Smith <git@kismith.co.uk> | 2012-08-02 20:41:55 (GMT) | 
|---|---|---|
| committer | Kevin Smith <git@kismith.co.uk> | 2012-08-02 21:03:09 (GMT) | 
| commit | d5ace22054203c7989691ae8b3fa4e4784d1b57e (patch) | |
| tree | 64d400cdb10644967df183d0f202fcbf8160a773 /3rdParty/Boost/src/boost/thread/pthread | |
| parent | 6f26d9aa86f0909af13b23b1a925b8d492e74154 (diff) | |
| download | swift-contrib-ks/boost1.47.zip swift-contrib-ks/boost1.47.tar.bz2  | |
Add two extra Boost dependencies, upgrade to 1.47.0ks/boost1.47
Diffstat (limited to '3rdParty/Boost/src/boost/thread/pthread')
| -rw-r--r-- | 3rdParty/Boost/src/boost/thread/pthread/condition_variable.hpp | 36 | 
1 files changed, 24 insertions, 12 deletions
diff --git a/3rdParty/Boost/src/boost/thread/pthread/condition_variable.hpp b/3rdParty/Boost/src/boost/thread/pthread/condition_variable.hpp index 9c5bee2..160c707 100644 --- a/3rdParty/Boost/src/boost/thread/pthread/condition_variable.hpp +++ b/3rdParty/Boost/src/boost/thread/pthread/condition_variable.hpp @@ -47,27 +47,39 @@ namespace boost      inline void condition_variable::wait(unique_lock<mutex>& m)      { -        thread_cv_detail::lock_on_exit<unique_lock<mutex> > guard; -        detail::interruption_checker check_for_interruption(&internal_mutex,&cond); -        guard.activate(m); -        int const res=pthread_cond_wait(&cond,&internal_mutex); -        BOOST_ASSERT(!res); +        int res=0; +        { +            thread_cv_detail::lock_on_exit<unique_lock<mutex> > guard; +            detail::interruption_checker check_for_interruption(&internal_mutex,&cond); +            guard.activate(m); +            res=pthread_cond_wait(&cond,&internal_mutex); +        }          this_thread::interruption_point(); +        if(res) +        { +            boost::throw_exception(condition_error()); +        }      }      inline bool condition_variable::timed_wait(unique_lock<mutex>& m,boost::system_time const& wait_until)      {          thread_cv_detail::lock_on_exit<unique_lock<mutex> > guard; -        detail::interruption_checker check_for_interruption(&internal_mutex,&cond); -        guard.activate(m); -        struct timespec const timeout=detail::get_timespec(wait_until); -        int const cond_res=pthread_cond_timedwait(&cond,&internal_mutex,&timeout); +        int cond_res; +        { +            detail::interruption_checker check_for_interruption(&internal_mutex,&cond); +            guard.activate(m); +            struct timespec const timeout=detail::get_timespec(wait_until); +            cond_res=pthread_cond_timedwait(&cond,&internal_mutex,&timeout); +        }          this_thread::interruption_point();          if(cond_res==ETIMEDOUT)          {              return false;          } -        BOOST_ASSERT(!cond_res); +        if(cond_res) +        { +            boost::throw_exception(condition_error()); +        }          return true;      } @@ -121,8 +133,8 @@ namespace boost                  detail::interruption_checker check_for_interruption(&internal_mutex,&cond);                  guard.activate(m);                  res=pthread_cond_wait(&cond,&internal_mutex); -                this_thread::interruption_point();              } +            this_thread::interruption_point();              if(res)              {                  boost::throw_exception(condition_error()); @@ -145,8 +157,8 @@ namespace boost                  detail::interruption_checker check_for_interruption(&internal_mutex,&cond);                  guard.activate(m);                  res=pthread_cond_timedwait(&cond,&internal_mutex,&timeout); -                this_thread::interruption_point();              } +            this_thread::interruption_point();              if(res==ETIMEDOUT)              {                  return false;  | 
 Swift