首页  >  文章  >  后端开发  >  如何使用睡眠函数暂停 C 程序执行?

如何使用睡眠函数暂停 C 程序执行?

Linda Hamilton
Linda Hamilton原创
2024-10-24 03:31:30834浏览

How to Pause Program Execution in C   using Sleep Functions?

在 C 中寻求睡眠函数

为了控制程序执行流程,您可能会遇到需要将程序暂停指定时间的情况。在 C 中,没有与其他语言中常用的 Sleep(time) 函数直接等效的函数。然而,C 标准库提供了一个可行的替代方案。

引入 std::this_thread::sleep_for

C 标准库提供了 std::this_thread::sleep_for 函数,它允许您将当前线程的执行暂停指定的持续时间。要使用它,您需要包含以下标头:

<code class="cpp">#include <chrono>
#include <thread></code>

std::this_thread::sleep_for 的语法如下:

<code class="cpp">void sleep_for(const std::chrono::duration& timespan);</code>

其中 timespan 是std::chrono::duration 对象指定睡眠持续时间。要创建基于毫秒的 std::chrono::duration,请使用 std::chrono::milliseconds 构造函数:

<code class="cpp">std::chrono::milliseconds timespan(111605);</code>

使用这些组件,您可以将程序的执行暂停所需的时间间隔:

<code class="cpp">std::this_thread::sleep_for(timespan);</code>

请注意,std::this_thread::sleep_until 作为基于时间的精确同步的补充函数。

传统睡眠选项 (Pre-C 11)

在引入 C 11 之前,该语言缺乏线程功能和睡眠功能。因此,暂停执行的解决方案是依赖于平台的。对于 Windows 或 Unix,您可能依赖于这样的东西:

<code class="cpp">#ifdef _WIN32
    #include <windows.h>
    
    void sleep(unsigned milliseconds)
    {
        Sleep(milliseconds);
    }
#else
    #include <unistd.h>
    
    void sleep(unsigned milliseconds)
    {
        usleep(milliseconds * 1000); // takes microseconds
    }
#endif</code>

或者,您可以使用 Boost 库的 boost::this_thread::sleep 来简化实现。

以上是如何使用睡眠函数暂停 C 程序执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn