diff --git a/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp b/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp index 8777e4aac133cf..908635f30b7698 100644 --- a/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp +++ b/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_until.pass.cpp @@ -7,7 +7,6 @@ //===----------------------------------------------------------------------===// // // UNSUPPORTED: libcpp-has-no-threads -// ALLOW_RETRIES: 2 // @@ -22,16 +21,15 @@ int main(int, char**) { - typedef std::chrono::system_clock Clock; - typedef Clock::time_point time_point; - std::chrono::milliseconds ms(500); - time_point t0 = Clock::now(); - std::this_thread::sleep_until(t0 + ms); - time_point t1 = Clock::now(); - std::chrono::nanoseconds ns = (t1 - t0) - ms; - std::chrono::nanoseconds err = 5 * ms / 100; - // The time slept is within 5% of 500ms - assert(std::abs(ns.count()) < err.count()); + typedef std::chrono::system_clock Clock; + typedef Clock::time_point time_point; + std::chrono::milliseconds ms(500); + time_point t0 = Clock::now(); + std::this_thread::sleep_until(t0 + ms); + time_point t1 = Clock::now(); + // NOTE: Operating systems are (by default) best effort and therefore we may + // have slept longer, perhaps much longer than we requested. + assert(t1 - t0 >= ms); return 0; }