C++睡眠函数:Windows平台下的Sleep函数和Linux平台的usleep函数

2023-12-31 12:54:49

C/C++睡眠函数:Windows平台下的Sleep函数和Linux平台的usleep函数

WinAPI Sleep

Sleep函数属于Windows API,使用它需要先包含synchapi.h

void Sleep(DWORD dwMilliseconds);

函数仅有一个参数(睡眠时长),单位是毫秒
参考Microsoft Docs

UNIX usleep

仅在Linux平台可用,使用它需要先包含unistd.h

int usleep(useconds_t usec);

函数仅有一个参数(睡眠时长),单位是微秒。该数值最大不超过1000000微秒(也就是1秒)。
参考Linux and UNIX Man Pages

C++11引入的跨平台通用睡眠函数sleep_for

template <class Rep, class Period>
void sleep_for02(const chrono::duration<Rep,Period>& rel_time);

函数sleep_for与前两个函数一样,都只有一个参数指明睡眠时长。稍显复杂的是,这个参数rel_time的单位取决于用户。
看官方例程:

// this_thread::sleep_for example
#include <iostream>       // std::cout, std::endl
#include <thread>         // std::this_thread::sleep_for
#include <chrono>         // std::chrono::seconds
 
int main() 
{
  std::cout << "countdown:\n";
  for (int i=10; i>0; --i) {
    std::cout << i << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(1));
  }
  std::cout << "Lift off!\n";

  return 0;
}

代码中使用std::chrono::seconds(1)表示1秒,同理可以用std::chrono::milliseconds(1000)来表示。

cplusplus Reference

文章来源:https://blog.csdn.net/qq_42679415/article/details/135314098
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。