當前位置:首頁 » 編程語言 » c語言sleep用法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言sleep用法

發布時間: 2022-09-03 05:34:35

❶ sleep()函數怎麼具體在c語言中怎麼用

Sleep方法是Java線程(Thread)開發中一種概念。是線程TIMED_WAITING狀態中的一種方法。使用方法為:

1、類名為創建線程的類名。

注意事項:

Sleep函數可以使計算機程序(進程,任務或線程)進入休眠,使其在一段時間內處於非活動狀態。當函數設定的計時器到期,或者接收到信號、程序發生中斷都會導致程序繼續執行。

❷ c語言sleep用法是什麼

C語言標准庫中沒有sleep這個函數,它實際上是一個系統API函數。

SLEEP是一種函數,作用是延時,程序暫停若干時間,在執行時要拋出一個中斷異常,必須對其進行捕獲並處理才可以使用這個函數。

Sleep()沒有返回值,作用是暫停程序,單位是毫秒。

比如:Sleep(10)的意思是暫停10毫秒.

❸ c語言sleep函數怎麼用

使用要帶上頭文件:

#include <windows.h>

Sleep函數:
功 能: 執行掛起一段時間
用 法: unsigned sleep(unsigned seconds);
注意:
1.在VC中使用帶上頭文件#include <windows.h>,在Linux下,gcc編譯器中,使用的頭文件因gcc版本的不同而不同#include <unistd.h>
2.在VC中,Sleep中的第一個英文字元為大寫的"S" ,在linux下不要大寫,在標准C中是sleep, 不要大寫,簡單的說VC用Sleep, 別的一律使用sleep。
3.在VC中,Sleep()裡面的單位,是以毫秒為單位,所以如果想讓函數滯留1秒的話,應該是Sleep(1000); 在Linux下,sleep()裡面的單位是秒,而不是毫秒。

示例:


#include<dos.h>
int main(void)
{
sound(440);
delay(500);
nosound();
return 0;
}
delay()是循環等待,該進程還在運行,佔用處理器。
sleep()不同,它會被掛起,把處理器讓給其他的進程。

❹ C語言的sleep,wait,delay函數有什麼區別

wait 是等待子進程的返回
sleep 參數指定暫停時間, 單位是 s
delay 參數指定暫停時間, 單位是 ms
所以 sleep(n) == delay(1000*n)
原型:extern void sleep(unsigned int sec);
用法:#include <system.h
功能:短暫延時
說明:延時sec秒舉例:// sleep.c
#include <system.h
main(){int c;clrscr();printf("\nHello, world!");sleep(1);clrscr();printf("\nHi, guys");getchar();return 0;}原型:extern void delay(unsigned int msec);
用法:#include <system.h
功能:短暫延時
說明:延時msec*4毫秒舉例:// delay.c
#include <system.h
main(){int c;clrscr();printf("\nHello, world!");
delay(250); // 250*4=1000msec=1secclrscr();printf("\nHi, guys");getchar();return 0;}wait(等待子進程中斷或結束)相關函數waitpid,fork表頭文件#include<sys/types.h
#include<sys/wait.h
定義函數pid_t wait (int * status);函數說明
wait()會暫時停止目前進程的執行,直到有信號來到或子進程結束。如果在調用wait()時子進程已經結束,則wait()會立即返回子進程結束狀態
值。子進程的結束狀態值會由參數status 返回,而子進程的進程識別碼也會一快返回。如果不在意結束狀態值,則參數status可以設成NULL。子進程的結束狀態值請參考waitpid()。
返回值如果執行成功則返回子進程識別碼(PID),如果有錯誤發生則返回-1。失敗原因存於errno中。

❺ C語言中sleep函數的原理是什麼

原理應該是這樣的:

例如執行sleep(3),表示當前線程停滯3ms後再繼續執行下面的代碼,底層步驟是:

  1. 創建一個元素{timeMillis:[當前時間戳+3ms],threadId:[線程id]},並將該元素按順序插入定時回調隊列中,比如現在操作系統中有3個定時正在停滯中,分別是1ms、10ms、3ms之後喚醒,那麼這個隊列就類似這樣子:{timeMillis:110928283,threadId:106}->{timeMillis:110928285,threadId:211}->{timeMillis:110928292,threadId:189},時間從小到大排序;

  2. 每當定時器產生一次中斷時,中斷回調函數中就會獲取這個隊列中第一個元素,將其timeMillis與當前時間戳比較,如果相等或超時,就表示該元素對應的線程106號線程需要喚醒了,則將106號線程的狀態設置為TASK_RUNNING(就緒態),當下一次進程切換時,106線程就可以被切換到並執行了;

  3. 注意:2中說的定時器和系統線程調度時鍾定時器我覺得不是一個,而是兩個時鍾定時器,不確定。

❻ C語言中sleep()函數到底有什麼功能關於緩沖區方面的,詳細具體點的。查了很多資料,都不全面。

Sleep()函數
頭文件:
#include

int
dt
=
1000;
它的功能是執行到Sleep(dt)函數時,程序睡覺(就是等在那裡)
dt
毫秒。
dt
=
1000,
程序睡覺
1
秒。同
緩沖區
沒有關系。
Sleep()函數
時間
計時
不很精確,每秒可能有25毫秒誤差。

❼ sleep函數的具體用法

Sleep函數
功 能: 執行掛起一段時間
用 法: void Sleep(DWORD dwMilliseconds);
在VC中使用帶上頭文件
#include <windows.h>
( Sleep函數存放頭文件:WinBase.h)
在gcc編譯器中,使用的頭文件因gcc版本的不同而不同
#include <unistd.h>
Sleep()單位為毫秒,sleep()單位為秒(如果需要更精確可以用usleep單位為微秒)
返回值:若進程/線程掛起到參數所指定的時間則返回0,若有信號中斷則返回剩餘秒數。
注意:
在VC中Sleep中的第一個英文字元為大寫的"S"
在標准C中是sleep, 不要大寫.. 下面使用大寫的來說明,, 具體用什麼看你用什麼編譯器. 簡單的說VC用Sleep, 別的一律使用sleep.
Sleep函數的一般形式:
Sleep(unsigned long);
其中,Sleep()裡面的單位,是以毫秒為單位,所以如果想讓函數滯留1秒的話,應該是Sleep(1000);
在Linux下,sleep中的「s」不大寫
sleep()單位為秒,usleep()裡面的單位是微秒。在內核中,sleep的實現是由pause函數和alarm函數兩個實現的。
特別注意在Codeblocks環境下是無法使用sleep函數的,因為在windows上Codeblocks採用mingw(Gnu在Window環境下的編譯器,可以充分使用WindowsApi)作為編譯器,而在stdlib.h中sleep的說明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;可以認為mingw舍棄了sleep函數,建議用Sleep實現sleep。
程序示例:

#include <windows.h>
#include<stdio.h>
int main()
{
int a;
a=1000;
printf("你");
Sleep(a);/* VC 使用Sleep*/
printf("好"); /*輸出「你」和「好」之間會間隔一千毫秒,即間隔一秒,sleep()的單位為毫秒*/
return 0;
}

❽ c語言Sleep()函數

Sleep(1) 是休息 1毫秒。不是非常精確的,只是說解析度是 1毫秒。
你的循環語句的執行,輸出語句的執行,也要花時間,同一時間,你的計算機系統還有很多進程也在運行,它們共享同一電腦的資源。 所以 你的程序 輸出不了那麼多數。

❾ C#中如何使用Sleep

Thread.Sleep 函數來使線程掛起一段時間.在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行),此操作受到系統計時器和調度程序精度和准確性的影響。該線程不丟失任何監視器的所屬權。簡單點說Sleep函數就是他告訴操作系統「在未來的多少毫秒內我不參與CPU競爭」。

例如Thread.Sleep(1000) ,表示線程休眠1000毫秒,時間過了之後再繼續執行程序。

在時間片演算法中,所有的進程排成一個隊列。操作系統按照他們的順序,給每個進程分配一段時間,即該進程允許運行的時間。如果在 時間片結束時進程還在運行,則CPU將被剝奪並分配給另一個進程。如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。調度程 序所要做的就是維護一張就緒進程列表,當進程用完它的時間片後,它被移到隊列的末尾。

所謂搶占式操作系統,就是說如果一個進程得到了 CPU 時間,除非它自己放棄使用 CPU ,否則將完全霸佔 CPU 。因此可以看出,在搶占式操作系統中,操作系統假設所有的進程都是「人品很好」的,會主動退出 CPU 。在搶占式操作系統中,假設有若干進程,操作系統會根據他們的優先順序、飢餓時間(已經多長時間沒有使用過 CPU 了),給他們算出一 個總的優先順序來。操作系統就會把 CPU 交給總優先順序最高的這個進程。當進程執行完畢或者自己主動掛起後,操作系統就會重新計算一次所有進程的總優先順序,然後再挑一個優先順序最高的把 CPU 控制權交給他。

(9)c語言sleep用法擴展閱讀:

時間片即CPU分配給各個程序的時間,每個線程被分配一個時間段,稱作它的時間片,即該進程允許運行的時間,使各個程序從表面上看是同時進行的。如果在時間片結束時進程還在運行,則CPU將被剝奪並分配給另一個進程。如果進程在時間片結束前阻塞或結束,則CPU當即進行切換。而不會造成CPU資源浪費。在宏觀上:我們可以同時打開多個應用程序,每個程序並行不悖,同時運行。但在微觀上:由於只有一個CPU,一次只能處理程序要求的一部分,如何處理公平,一種方法就是引入時間片,每個程序輪流執行。

參考資料:網路-時間片網路-C#

❿ c語言sleep用法

C語言標准庫中沒有sleep這個函數,它實際上是一個系統API函數。

函數功能: 執行掛起一段時間

1、在VC中使用帶上頭文件,而且全稱為Sleep(),第一個字母需要大寫。

#include<windows.h>//需要添加頭文件
Sleep(unisgnedlong);//函數聲明

Windows中,Sleep()裡面的單位,是以毫秒為單位,所以如果想讓函數滯留1秒的話,應該寫成:

Sleep(1000);

2、在gcc中,使用的頭文件因gcc版本的不同而不同,一般來說,linux系統需要添加的頭文件為:

#include <unistd.h>

應該是Sleep(1000);

在Linux下,sleep()裡面的單位是秒,而不是毫秒。