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.hwindows.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
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐