首頁  >  文章  >  後端開發  >  如何使用睡眠函數暫停 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