diff --git a/src/thread.cpp b/src/thread.cpp index 4fb1dd21f..290e2aef9 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -117,6 +117,12 @@ sleep_for(const chrono::nanoseconds& ns) using namespace chrono; if (ns > nanoseconds::zero()) { +#if defined(_LIBCPP_WIN32API) + milliseconds ms = duration_cast(ns); + if (ns > duration_cast(ms)) + ++ms; + Sleep(ms.count()); +#else seconds s = duration_cast(ns); timespec ts; typedef decltype(ts.tv_sec) ts_sec; @@ -134,6 +140,7 @@ sleep_for(const chrono::nanoseconds& ns) while (nanosleep(&ts, &ts) == -1 && errno == EINTR) ; +#endif } }