回覆列表
  • 1 # 苦瓜加點糖

    可以用sleep函式。這個函式在windows.h標頭檔案中,如果是linux系統,在unistd.h標頭檔案,sleep() 函式的單位為ms, Sleep(10000);語句就可以實現滯留10s

  • 2 # 溳城丁丁

    直接貼上原始碼,以及執行結果吧!

    #include <stdio.h>#include <sys/time.h>#include <unistd.h>int main(int argc, char const *argv[]){ /* code */ struct timeval tv; gettimeofday(&tv, NULL); long s_time = tv.tv_sec; # 獲取當前時間 printf("開始時間為:%ld\n",s_time); printf("hello_word!\n"); #輸出語句 sleep(10); # 間隔10秒輸出 printf("end\n"); # 輸出語句 gettimeofday(&tv, NULL); long e_time = tv.tv_sec; #獲取當前時間 printf("結束時間為:%ld\n",e_time); printf("間隔時間為:%ld\n",e_time-s_time); #輸出間隔時間 return 0;}
  • 3 # 長風凌空

    這個延時的功能實現起來不難,C語言裡面實現實現的方式很多,這裡簡單講幾種應用比較普遍的。

    1、延時

    在一般的流程中,上一條指令執行完畢就按順序執行下一條。在這裡就體現為控制檯的兩條輸出語句同時輸出了,這裡自然有個時間上的間隔,但以眼睛來看就是如此。

    那麼,依舊是這個原理如何實現間隔10秒再輸出下一條語句?

    我們可以在兩條語句之間加入空指令,比如nop;然後粗略得到100次nop指令執行的時間,以此為基礎使用for迴圈或者do while來控制nop執行的次數。這樣就能達到題主的目的。

    for(int i=0;i++;i<100)

    {nop;}

    2、定時器

    定時器的應用會出現一箇中斷的概念,也可以理解為回撥。當我們設定定時的長短,定義中斷函式後,就可以開啟定時器。

    這個計時和你現在main函式中指令執行是獨立的。只是到特定時間,產生一箇中斷,然後提示你時間到了。

    我們就可以透過判斷相關的時間標誌位來確定是否到達10秒的延時。

    3、RTOS

    說RTOS只是舉個例子,在widows平臺下也是一樣的道理。

    我們需要延時的時候,只需要按照第一種方式呼叫一個延時函式,如delay_ms(x)。

    但是實際的執行效果卻有點像第二種方式,CPU繼續執行其它的執行緒。這裡是基於作業系統了,要說清楚又是另一個問題了。

    建議題主瞭解一下排程

  • 中秋節和大豐收的關聯?
  • 很喜歡喝純咖啡,可以自己在網上買咖啡豆,自己,磨嗎?