当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ Sleep用法及代码示例


C++ 在操作系统的帮助下提供了在特定时间段内延迟或不活动状态的函数。其他 CPU 操作将正常运行,但 C++ 中的 Sleep() 函数将在线程指定的时间内休眠当前的可执行文件。根据所使用的操作系统,可以使用 2 个库来实现:

#include<windows.h>           // for windows

#include<unistd.h>               // for linux 

睡眠可以暂停 time_period 的执行,其中 time_period 默认以秒为单位,但我们可以将其更改为微秒。

用法:

sleep( time_period );    // time_period in seconds

范围:time_period 以秒为单位,代表睡眠时间。

返回类型:sleep函数的返回类型是一个整数,如果函数执行成功则返回值为0,否则减去返回的时间段值。

例子:

C++


// C++ Program to show how to use
// sleep function
#include <iostream>
// Library effective with Windows
#include <windows.h>
// Library effective with Linux
#include <unistd.h>
using namespace std;
// Driver code
int main()
{
  cout << "Join the Line:\n";
  cout << "Wait for 5 seconds\n";
  // sleep will schedule rest of 
  // activities after 10 seconds
  sleep(5);
  cout << "It's your time buy ticket";
}

输出:

C++ 中类似 sleep 的函数

1. usleep():该函数与 sleep 基本相似,但只能与 <unistd.h> 库一起使用。

用法:

 usleep(time_period)   // time_period in microseconds

参数:它需要time_period,其中time_period默认以微秒为单位。 1 秒 = 10^6 微秒。

返回类型:整数,如果成功则返回 0,如果过程失败则返回 (-1 或 -exp)。

例子:

C++


// C++ Program to show the 
// use of usleep function
#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
    cout << "Take your Position\n";
    // sleep for 10 seconds
    cout << "Wait for 5 seconds\n";
    usleep(5000000);
    cout << "Run! Run!";
    return 0;
}

输出:

2. sleep_for():将线程安排在指定时间。它的作用就像延迟一样,就像睡眠函数一样。但是,由于调度活动或者可能是资源争用延迟,线程可能花费比计划时间更多的时间。库使用了<线程>。

用法:

this_<thread_name>::sleep_for(chorno:: time_duration (time_period))         

参数:time_period(获取线程的时间)

Example:

C++


// C++ Program to demonstrate 
// sleep_for()function
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
// Driver cpde
int main()
{
  cout << "Thread is running\n";
   
  // Thread delayed for 5 seconds
  this_thread::sleep_for(chrono::milliseconds(5000));
  cout << "Thread was acquired for 5 seconds\n";
  return 0;
}

输出:

3. sleep_until():阻塞线程的执行,直到sleep_time完成。然而,即使由于调度或资源争用延迟而达到sleep_time,它也可能比sleep_time花费更多的时间。库使用了<线程>。

用法:

this_<thread_name>::sleep_until(awake_time) 

参数:Sleep_time(线程被阻塞执行的同一时间)

Example:

C++


// C++ Program to demonstrate
// sleep_until()
#include <chrono>
#include <iostream>
#include <thread>
// Functioning returning 
// current time
auto now() 
{
  return std::chrono::steady_clock::now(); 
}
// Function calculating sleep time 
// with 2000ms delay
auto awake_time()
{
  using std::chrono::operator"" ms;
  return now() + 2000ms;
}
// Driver code
int main()
{
  std::cout << "Starting the operation .....\n" << 
                std::flush;
   
  // Calculating current time
  const auto start{ now() };
  // using the sleep_time to delay
  // and calculating sleep time
  // using awake_time function
  std::this_thread::sleep_until(awake_time());
  // storing time for printing
  std::chrono::duration<double, std::milli> elapsed{
      now() - start
  };
  // printing waiting time
  std::cout << "Waited for : " << 
                elapsed.count() << " ms\n";
}

输出:



相关用法


注:本文由纯净天空筛选整理自佚名大神的英文原创作品 Sleep Function in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。