Use steady_clock to implement condition_variable::wait_for with predicate
authorMike Crowe <mac@mcrowe.com>
Tue, 25 Sep 2018 14:59:27 +0000 (14:59 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 25 Sep 2018 14:59:27 +0000 (15:59 +0100)
In r263225 (d2e378182a12d68fe5caeffae681252662a2fe7b), I fixed
condition_variable::wait_for to use std::chrono::steady_clock for the wait.
Unfortunately, I failed to spot that the same fix is required for the
wait_for variant that takes a predicate too.

2018-09-25  Mike Crowe  <mac@mcrowe.com>

* include/std/condition_variable (condition_variable::wait_for): Use
steady clock in overload that uses a predicate.

From-SVN: r264575

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/condition_variable

index 67b3eb4a94eb7428bc53ceef94675c07cb3c041e..611d43ac1bbbbdbabc60289b97e2049b076d9bfa 100644 (file)
@@ -1,3 +1,8 @@
+2018-09-25  Mike Crowe  <mac@mcrowe.com>
+
+       * include/std/condition_variable (condition_variable::wait_for): Use
+       steady clock in overload that uses a predicate.
+
 2018-09-25  Jonathan Wakely  <jwakely@redhat.com>
 
        PR libstdc++/87431
index 1f84ea324ebb9a5febdf1e867312b51c50a83b60..84173012b5b09c05339a4f58963f3422876dd3f3 100644 (file)
@@ -158,11 +158,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               const chrono::duration<_Rep, _Period>& __rtime,
               _Predicate __p)
       {
-       using __dur = typename __clock_t::duration;
+       using __dur = typename __steady_clock_t::duration;
        auto __reltime = chrono::duration_cast<__dur>(__rtime);
        if (__reltime < __rtime)
          ++__reltime;
-       return wait_until(__lock, __clock_t::now() + __reltime, std::move(__p));
+       return wait_until(__lock, __steady_clock_t::now() + __reltime,
+                         std::move(__p));
       }
 
     native_handle_type