+2015-09-02 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ PR libstdc++/67408
+ * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Use
+ _Derived::_M_timedlock().
+ (timed_mutex): Add _M_timedlock() and make base class a friend.
+ (recursive_timed_mutex): Likewise.
+
2015-08-28 Tim Shen <timshen@google.com>
PR libstdc++/67362
static_cast<long>(__ns.count())
};
- auto __mutex = static_cast<_Derived*>(this)->native_handle();
- return !__gthread_mutex_timedlock(__mutex, &__ts);
+ return static_cast<_Derived*>(this)->_M_timedlock(__ts);
}
template<typename _Clock, typename _Duration>
native_handle_type
native_handle()
{ return &_M_mutex; }
+
+ private:
+ friend class __timed_mutex_impl<timed_mutex>;
+
+ bool
+ _M_timedlock(const __gthread_time_t& __ts)
+ { return !__gthread_mutex_timedlock(&_M_mutex, &__ts); }
};
/// recursive_timed_mutex
native_handle_type
native_handle()
{ return &_M_mutex; }
+
+ private:
+ friend class __timed_mutex_impl<recursive_timed_mutex>;
+
+ bool
+ _M_timedlock(const __gthread_time_t& __ts)
+ { return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); }
};
#endif
#endif // _GLIBCXX_HAS_GTHREADS