C++11 的更新答案:
Use the sleep_for
and sleep_until
功能:
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread; // sleep_for, sleep_until
using namespace std::chrono; // nanoseconds, system_clock, seconds
sleep_for(nanoseconds(10));
sleep_until(system_clock::now() + seconds(1));
}
有了这些函数,就不再需要不断添加新函数来获得更好的分辨率:sleep
, usleep
, nanosleep
, etc. sleep_for
and sleep_until
是模板函数,可以通过以下方式接受任何分辨率的值chrono
类型;小时、秒、飞秒等
在 C++14 中,您可以使用文字后缀进一步简化代码nanoseconds
and seconds
:
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread; // sleep_for, sleep_until
using namespace std::chrono_literals; // ns, us, ms, s, h, etc.
using std::chrono::system_clock;
sleep_for(10ns);
sleep_until(system_clock::now() + 1s);
}
请注意,睡眠的实际持续时间取决于实现:您可以要求睡眠 10 纳秒,但实现可能最终会睡眠一毫秒(如果这是它可以做到的最短时间)。