详解C++11 线程休眠函数
在C++11中,新增了一个<chrono>
头文件,其中包含了许多与时间相关的类和函数。其中,std::this_thread::sleep_for
是一个非常实用的函数,它可以让当前线程休眠一段时间。
函数原型
namespace std {
namespace chrono {
template<class Rep, class Period>
void sleep_for(const duration<Rep, Period>& rel_time);
}
}
函数接受一个std::chrono::duration
类型的参数,指定需要休眠的时间。std::chrono::duration
是一个模板类,它有两个模板参数,分别表示时间长度和时间单位。我们可以使用不同的参数类型来指定不同的时间单位。
示例1:休眠500毫秒
我们可以使用std::chrono::milliseconds
来指定500毫秒的时间长度,然后传递给std::this_thread::sleep_for
函数:
#include <iostream>
#include <chrono>
#include <thread>
int main() {
std::cout << "Start" << std::endl;
std::this_thread::sleep_for(std::chrono::milliseconds(500));
std::cout << "End" << std::endl;
return 0;
}
上面的程序会输出Start
,等待500毫秒,然后输出End
。
示例2:休眠1秒
我们可以使用std::chrono::seconds
来指定1秒的时间长度,然后传递给std::this_thread::sleep_for
函数:
#include <iostream>
#include <chrono>
#include <thread>
int main() {
std::cout << "Start" << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "End" << std::endl;
return 0;
}
上面的程序会输出Start
,等待1秒,然后输出End
。
除此之外,您还可以使用std::chrono::microseconds
指定微秒、std::chrono::nanoseconds
指定纳秒等单位的时间长度。
总的来说,std::this_thread::sleep_for
是一个非常实用的函数,在一些需要等待的场景下十分有用。同时,它也是C++11标准库中标准的线程休眠函数,可移植性非常高。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解C++11 线程休眠函数 - Python技术站