N3191: C++ Timeout Specification

llvm-svn: 119909
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 3dc6455ff0216030b1864b1d9676549f74f1a128
diff --git a/include/__mutex_base b/include/__mutex_base
index 554ec3f..d3b2a1b 100644
--- a/include/__mutex_base
+++ b/include/__mutex_base
@@ -382,11 +382,11 @@
                              const chrono::duration<_Rep, _Period>& __d)
 {
     using namespace chrono;
-    system_clock::time_point     __s_now = system_clock::now();
-    monotonic_clock::time_point  __c_now = monotonic_clock::now();
+    system_clock::time_point __s_now = system_clock::now();
+    steady_clock::time_point __c_now = steady_clock::now();
     __do_timed_wait(__lk, __s_now + __ceil<nanoseconds>(__d));
-    return monotonic_clock::now() - __c_now < __d ? cv_status::no_timeout :
-                                                    cv_status::timeout;
+    return steady_clock::now() - __c_now < __d ? cv_status::no_timeout :
+                                                 cv_status::timeout;
 }
 
 template <class _Rep, class _Period, class _Predicate>
@@ -396,7 +396,7 @@
                              const chrono::duration<_Rep, _Period>& __d,
                              _Predicate __pred)
 {
-    return wait_until(__lk, chrono::monotonic_clock::now() + __d,
+    return wait_until(__lk, chrono::steady_clock::now() + __d,
                       _STD::move(__pred));
 }
 
diff --git a/include/chrono b/include/chrono
index d41b88f..97b0c81 100644
--- a/include/chrono
+++ b/include/chrono
@@ -223,26 +223,26 @@
     typedef duration::rep                    rep;
     typedef duration::period                 period;
     typedef chrono::time_point<system_clock> time_point;
-    static const bool is_monotonic =          false;
+    static const bool is_steady =            false;
 
     static time_point now();
     static time_t     to_time_t  (const time_point& __t);
     static time_point from_time_t(time_t __t);
 };
 
-class monotonic_clock
+class steady_clock
 {
 public:
     typedef nanoseconds                                   duration;
     typedef duration::rep                                 rep;
     typedef duration::period                              period;
-    typedef chrono::time_point<monotonic_clock, duration> time_point;
-    static const bool is_monotonic =                       true;
+    typedef chrono::time_point<steady_clock, duration>    time_point;
+    static const bool is_steady =                         true;
 
     static time_point now();
 };
 
-typedef monotonic_clock high_resolution_clock;
+typedef steady_clock high_resolution_clock;
 
 }  // chrono
 
@@ -843,26 +843,26 @@
     typedef duration::rep                    rep;
     typedef duration::period                 period;
     typedef chrono::time_point<system_clock> time_point;
-    static const bool is_monotonic =          false;
+    static const bool is_steady =            false;
 
     static time_point now();
     static time_t     to_time_t  (const time_point& __t);
     static time_point from_time_t(time_t __t);
 };
 
-class _LIBCPP_VISIBLE monotonic_clock
+class _LIBCPP_VISIBLE steady_clock
 {
 public:
     typedef nanoseconds                                   duration;
     typedef duration::rep                                 rep;
     typedef duration::period                              period;
-    typedef chrono::time_point<monotonic_clock, duration> time_point;
-    static const bool is_monotonic =                       true;
+    typedef chrono::time_point<steady_clock, duration>    time_point;
+    static const bool is_steady =                         true;
 
     static time_point now();
 };
 
-typedef monotonic_clock high_resolution_clock;
+typedef steady_clock high_resolution_clock;
 
 } // chrono
 
diff --git a/include/condition_variable b/include/condition_variable
index 682fb45..124d388 100644
--- a/include/condition_variable
+++ b/include/condition_variable
@@ -232,7 +232,7 @@
 condition_variable_any::wait_for(_Lock& __lock,
                                  const chrono::duration<_Rep, _Period>& __d)
 {
-    return wait_until(__lock, chrono::monotonic_clock::now() + __d);
+    return wait_until(__lock, chrono::steady_clock::now() + __d);
 }
 
 template <class _Lock, class _Rep, class _Period, class _Predicate>
@@ -242,7 +242,7 @@
                                  const chrono::duration<_Rep, _Period>& __d,
                                  _Predicate __pred)
 {
-    return wait_until(__lock, chrono::monotonic_clock::now() + __d,
+    return wait_until(__lock, chrono::steady_clock::now() + __d,
                       _STD::move(__pred));
 }
 
diff --git a/include/future b/include/future
index 55b0ead..be975f4 100644
--- a/include/future
+++ b/include/future
@@ -603,7 +603,7 @@
 future_status
 __assoc_sub_state::wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const
 {
-    return wait_until(chrono::monotonic_clock::now() + __rel_time);
+    return wait_until(chrono::steady_clock::now() + __rel_time);
 }
 
 template <class _R>
diff --git a/include/mutex b/include/mutex
index 45ce669..c87d0fd 100644
--- a/include/mutex
+++ b/include/mutex
@@ -221,7 +221,7 @@
     template <class _Rep, class _Period>
         _LIBCPP_INLINE_VISIBILITY
         bool try_lock_for(const chrono::duration<_Rep, _Period>& __d)
-            {return try_lock_until(chrono::monotonic_clock::now() + __d);}
+            {return try_lock_until(chrono::steady_clock::now() + __d);}
     template <class _Clock, class _Duration>
         bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t);
     void unlock();
@@ -264,7 +264,7 @@
     template <class _Rep, class _Period>
         _LIBCPP_INLINE_VISIBILITY
         bool try_lock_for(const chrono::duration<_Rep, _Period>& __d)
-            {return try_lock_until(chrono::monotonic_clock::now() + __d);}
+            {return try_lock_until(chrono::steady_clock::now() + __d);}
     template <class _Clock, class _Duration>
         bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t);
     void unlock();
diff --git a/include/thread b/include/thread
index fe671b2..abb56f4 100644
--- a/include/thread
+++ b/include/thread
@@ -406,10 +406,10 @@
 template <class _Duration>
 inline _LIBCPP_INLINE_VISIBILITY
 void
-sleep_until(const chrono::time_point<chrono::monotonic_clock, _Duration>& __t)
+sleep_until(const chrono::time_point<chrono::steady_clock, _Duration>& __t)
 {
     using namespace chrono;
-    sleep_for(__t - monotonic_clock::now());
+    sleep_for(__t - steady_clock::now());
 }
 
 inline _LIBCPP_INLINE_VISIBILITY