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";
}
输出:
相关用法
- C++ Stack emplace()用法及代码示例
- C++ Stack empty()用法及代码示例
- C++ Stack pop()用法及代码示例
- C++ Stack push()用法及代码示例
- C++ Stack size()用法及代码示例
- C++ String Assign()用法及代码示例
- C++ String Data()用法及代码示例
- C++ String Find()用法及代码示例
- C++ String append()用法及代码示例
- C++ String at()用法及代码示例
- C++ String back()用法及代码示例
- C++ String begin()用法及代码示例
- C++ String c_str()用法及代码示例
- C++ String capacity()用法及代码示例
- C++ String cbegin()用法及代码示例
- C++ String cend()用法及代码示例
- C++ String clear()用法及代码示例
- C++ String compare()用法及代码示例
- C++ String copy()用法及代码示例
- C++ String crbegin()用法及代码示例
- C++ String crend()用法及代码示例
- C++ String empty()用法及代码示例
- C++ String end()用法及代码示例
- C++ String erase()用法及代码示例
- C++ String find_first_not_of()用法及代码示例
注:本文由纯净天空筛选整理自佚名大神的英文原创作品 Sleep Function in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。