在windows上延时
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
//睡眠5秒再输出
Sleep(5000);//单位是毫秒
std::cout << "over!" << std::endl;
}
在linux上
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
//5秒后输出
sleep(5);
std::cout << "hello!" << std::endl;
//3000000微妙(相当于3秒)输出
usleep(3000000);
std::cout << "over!" << std::endl;
return 0;
}
C++11中std线程也提供了延时
#include <iostream>
#include <chrono>
#include <thread>
int main() {
std::cout << "Hello waiter\n" << std::flush;
auto start = std::chrono::high_resolution_clock::now();
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
auto end = std::chrono::high_resolution_clock::now();
std::chrono::duration<double, std::milli> elapsed = end-start;
std::cout << "Waited " << elapsed.count() << " ms\n";
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
更加精确地延时:
#include <chrono>
void delay(int timeout_ms)
{
auto start = std::chrono::system_clock::now();
while (true)
{
auto duration =
std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - start).count();
if (duration > timeout_ms)
{
LOGGING_ERROR("timeout occurred,timeout %d ms", timeout_ms);
break;
}
}