@@ -471,9 +471,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Rep, typename _Period>
bool
- try_lock_for(const chrono::duration<_Rep, _Period>& __rel_time)
+ try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
{
- return try_lock_until(__clock_t::now() + __rel_time);
+ auto __rt = chrono::duration_cast<__clock_t::duration>(__rtime);
+ if (ratio_greater<__clock_t::period, _Period>())
+ ++__rt;
+ return try_lock_until(__clock_t::now() + __rt);
}
// Shared ownership
@@ -484,9 +487,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Rep, typename _Period>
bool
- try_lock_shared_for(const chrono::duration<_Rep, _Period>& __rel_time)
+ try_lock_shared_for(const chrono::duration<_Rep, _Period>& __rtime)
{
- return try_lock_shared_until(__clock_t::now() + __rel_time);
+ auto __rt = chrono::duration_cast<__clock_t::duration>(__rtime);
+ if (ratio_greater<__clock_t::period, _Period>())
+ ++__rt;
+ return try_lock_shared_until(__clock_t::now() + __rt);
}
#if _GLIBCXX_USE_PTHREAD_RWLOCK_T && _GTHREAD_USE_MUTEX_TIMEDLOCK