This is a first attempt to make std::future::wait_until and std::future::wait_for make correct use of std::chrono::steady_clock/CLOCK_MONOTONIC. It also makes std::future::wait_until react to changes to CLOCK_REALTIME during the wait, but only when passed a std::chrono::system_clock time point.
Prior to these patches, the situation is similar to that described at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41861 for std::condition_variable, but with the benefit that this time the bug can be fixed entirely within libstdc++. (I've omitted the ChangeLog entries for now, since I don't believe that this is ready to be accepted in its current form.) Mike. Mike Crowe (4): libstdc++ futex: Use FUTEX_CLOCK_REALTIME for wait libstdc++ futex: Support waiting on std::chrono::steady_clock directly libstdc++ atomic_futex: Use std::chrono::steady_clock as reference clock Extra async tests, not for merging libstdc++-v3/include/bits/atomic_futex.h | 74 +++++++++++++++++++++-- libstdc++-v3/src/c++11/futex.cc | 48 +++++++++++---- libstdc++-v3/testsuite/30_threads/async/async.cc | 76 ++++++++++++++++++++++++ 3 files changed, 181 insertions(+), 17 deletions(-) -- 2.11.0