// Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // (C) Copyright 2011 Vicente J. Botet Escriba #ifndef BOOST_THREAD_V2_THREAD_HPP #define BOOST_THREAD_V2_THREAD_HPP #include #ifdef BOOST_THREAD_USES_CHRONO #include #endif #include #include namespace boost { namespace this_thread { #ifdef BOOST_THREAD_USES_CHRONO template void sleep_for(const chrono::duration& d) { using namespace chrono; nanoseconds ns = duration_cast (d); if (ns < d) ++ns; sleep_for(ns); } template void sleep_until(const chrono::time_point& t) { using namespace chrono; mutex mut; condition_variable cv; unique_lock lk(mut); while (Clock::now() < t) cv.wait_until(lk, t); } template inline BOOST_SYMBOL_VISIBLE void sleep_until(const chrono::time_point& t) { using namespace chrono; sleep_for(t - steady_clock::now()); } #endif } } #endif