C++ std::this_thread::sleep_for()睡眠函数和C语言睡眠函数sleep()、Sleep()有什么区别?(sleep_for()更稳定)(线程休眠)
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
cppman
std::this_thread::sleep_for(3) C++ Programmer's Manual std::this_thread::sleep_for(3)
NAME
std::this_thread::sleep_for - Sleep for time span //休眠一段时间
TYPE
function
SYNOPSIS
#include <thread>
template <class Rep, class Period>
void sleep_for (const chrono::duration<Rep,Period>& rel_time);
DESCRIPTION
Blocks execution of the calling thread during the span of time specified by rel_time.
The execution of the current thread is stopped until at least rel_time has passed from now. Other threads continue their execution.
//在 rel_time 指定的时间跨度内阻止调用线程的执行。
//当前线程的执行将停止,直到从现在开始至少经过 rel_time。 其他线程继续执行。
PARAMETERS
rel_time
The time span after which the calling thread shall resume its execution.
Note that multi-threading management operations may cause certain delays beyond this.
duration is an object that represents a specific relative time.
//调用线程应恢复其执行的时间跨度。
//请注意,多线程管理操作可能会导致超出此范围的某些延迟。
//duration 是一个表示特定相对时间的对象。
RETURN VALUE
none
EXAMPLE
// 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;
}
Output (after 10 seconds):
countdown:
10
9
8
7
6
5
4
3
2
1
Lift off!
EXCEPTION SAFETY
If the type of rel_time never throws exceptions (like the instantiations of duration in header <chrono>), this function never throws exceptions (no-throw
guarantee).
SEE ALSO
yield(3)
Yield to other threads (function)
sleep_until(3)
Sleep until time point (function)
REFERENCE
cplusplus.com, 2000-2015 - All rights reserved.
cplusplus.com 2022-05-13 std::this_thread::sleep_for(3)
(END)
std::this_thread::sleep_for()与sleep()区别
在C++ 11出现之前,C++没有提供睡眠函数,它提供了std::thread::sleep_for()。所以Boost提供了自己的代码,使你的代码独立于平台。
C函数sleep(),usleep()和Sleep()是平台特定的而不是C++标准库的一部分。
参考文章:std::this_thread::sleep_for和直接使用sleep有什么区别?
20230214
sleep()
函数属于 C 语言库函数,它的声明通常在 unistd.h
或 windows.h
中。
而 std::this_thread::sleep_for
是 C++11 中引入的 <thread>
头文件中的函数。
区别:
std::this_thread::sleep_for()
使用了C++11的标准库chrono,其中chrono是一种时间抽象。这个库中定义了时间单元(如秒、毫秒、微秒等),可以表示一段时间的长度。std::chrono::seconds
就是一个时间长度的类型,它表示一个秒数,用来作为sleep_for()
函数的参数。
在实现上,sleep_for()
函数使用了系统底层的线程API(例如pthread_sleep()
),与操作系统时间管理机制直接交互。这种做法可以保证线程休眠时间的准确性,而不受其他进程的影响。
与此相比,C语言中的sleep()
函数在实现上可能有些不稳定,它的精确性受到进程调度器和系统环境的影响。使用C++11的chrono
库和std::this_thread::sleep_for()
函数,能够提供一种更加稳定的、与系统底层直接交互的方式,来处理时间和线程休眠。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:1 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献212条内容
所有评论(0)