c語言延遲函數原理:
成都創新互聯服務項目包括來賓網站建設、來賓網站制作、來賓網頁制作以及來賓網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,來賓網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到來賓省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!
延遲函數里執行的都是空語句,也就是說通過循環執行空語句來達到延遲的目的.每執行一條語句,即使是空語句都要耗費電腦一些處理時間的,就是因為這個,在延遲函數里寫一些無關緊要的東西,用來浪費電腦處理時間,從而達到延遲目的。
函數名:
delay
功
能:
將程序的執行暫停一段時間(毫秒)
(該函數是TC下特有的函數,VC下應使用Sleep()函數)
用
法:
void
delay(unsigned
milliseconds);
程序例:
/*
Emits
a
440-Hz
tone
for
500
milliseconds
*/
#include
int
main(void)
{
sound(440);
delay(500);
nosound();
return
0;
}
原理應該是這樣的:
例如執行sleep(3),表示當前線程停滯3ms后再繼續執行下面的代碼,底層步驟是:
創建一個元素{timeMillis:[當前時間戳+3ms],threadId:[線程id]},并將該元素按順序插入定時回調隊列中,比如現在操作系統中有3個定時正在停滯中,分別是1ms、10ms、3ms之后喚醒,那么這個隊列就類似這樣子:{timeMillis:110928283,threadId:106}-{timeMillis:110928285,threadId:211}-{timeMillis:110928292,threadId:189},時間從小到大排序;
每當定時器產生一次中斷時,中斷回調函數中就會獲取這個隊列中第一個元素,將其timeMillis與當前時間戳比較,如果相等或超時,就表示該元素對應的線程106號線程需要喚醒了,則將106號線程的狀態設置為TASK_RUNNING(就緒態),當下一次進程切換時,106線程就可以被切換到并執行了;
注意:2中說的定時器和系統線程調度時鐘定時器我覺得不是一個,而是兩個時鐘定時器,不確定。
庫函數顧名思義是把函數放到庫里..是別人把一些常用到的函數編完放到一個文件里,供別人用.
別人用的時候把它所在的文件名用#include加到里面就可以了.
一般是放到lib文件里的....
編譯器提供的可在c源程序中調用的函數。
可分為兩類,一類是c語言標準規定的庫函數,一類是編譯器特定的庫函數。
由于版權原因,庫函數的源代碼一般是不可見的,但在頭文件中你可以看到它對外的接口。
如果想具體了解庫函數是怎么具體實現的,可以在網上找到庫函數的源代碼。之后進行研究。祝你成功!
希望我的回答對您有幫助!
網站題目:c語言中函數的原理 c語言中的函數
瀏覽地址:http://m.kartarina.com/article10/hjgggo.html
成都網站建設公司_創新互聯,為您提供面包屑導航、企業建站、網站制作、網站策劃、靜態網站、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯