std::this_thread::wait_for
是C++11中引入的一个函数,用于使当前线程等待指定的时间。它可以让你避免忙等待(busy waiting),从而提高程序的性能。std::this_thread::wait_for
函数的原型如下:
template < class Rep, class Period >
typename std::enable_if< std::is_integral<Rep>::value && std::is_floating_point<Period>::value >::type
wait_for( std::chrono::duration<Rep, Period> rel_time );
其中,rel_time
是一个表示等待时间的std::chrono::duration
对象。你可以使用不同的时间单位,例如秒、毫秒等。
下面是一个使用std::this_thread::wait_for
的示例:
#include <iostream>
#include <chrono>
#include <thread>
int main() {
std::cout << "Starting...\n";
// 等待1秒
std::chrono::seconds wait_time(1);
if (std::this_thread::wait_for(wait_time) == std::chrono::steady_clock::time_point::min()) {
std::cout << "Timeout occurred.\n";
} else {
std::cout << "Wait completed.\n";
}
return 0;
}
在这个示例中,我们创建了一个表示1秒等待时间的std::chrono::seconds
对象,并将其传递给std::this_thread::wait_for
函数。如果等待时间到达,函数将返回std::chrono::steady_clock::time_point::min()
,否则返回实际等待结束的时间点。