30 #ifndef _GLIBCXX_THIS_THREAD_SLEEP_H
31 #define _GLIBCXX_THIS_THREAD_SLEEP_H 1
33 #ifdef _GLIBCXX_SYSHDR
34 #pragma GCC system_header
37 #if __cplusplus >= 201103L
40 #ifdef _GLIBCXX_USE_NANOSLEEP
45 namespace std _GLIBCXX_VISIBILITY(default)
47 _GLIBCXX_BEGIN_NAMESPACE_VERSION
60 #ifndef _GLIBCXX_NO_SLEEP
63 template<
typename _Rep,
typename _Period>
67 if (__rtime <= __rtime.zero())
70 struct timespec __ts = chrono::__to_timeout_timespec(__rtime);
71 #ifdef _GLIBCXX_USE_NANOSLEEP
72 while (::nanosleep(&__ts, &__ts) == -1 && errno == EINTR)
83 template<
typename _Clock,
typename _Duration>
87 #if __cplusplus > 201703L
88 static_assert(chrono::is_clock_v<_Clock>);
90 auto __now = _Clock::now();
91 if (_Clock::is_steady)
97 while (__now < __atime)
100 __now = _Clock::now();
108 _GLIBCXX_END_NAMESPACE_VERSION
112 #endif // _GLIBCXX_THIS_THREAD_SLEEP_H