99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

程序小白
認證:優質創作者
所在專題目錄 查看專題
小小調度器——調度器核心的純C實現
小小調度器——原來C代碼還能這么寫,原作者沒少挨打吧!
小小調度器——開局default,優雅總藏于細節之中
作者動態 更多
基于stm32采用PWM驅動伺服控制器學習筆記
05-13 15:25
基于STM32驅動TM1638學習筆記——軟件篇
04-19 12:42
基于TM1638驅動8位數碼管設計分享
02-24 11:26
RT-Thread驅動之路: Studio創建FAL分區⑤
01-02 08:30
RT-Thread驅動之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

小小調度器——開局default,優雅總藏于細節之中

      有時候技術人員之間的差異微乎其微,但就是這微乎其微的差異積少成多,讓我們與大牛之間的距離越來越遠,當你開始在意這些細節而不是只關注成長的速度的時候,時間會告訴你當前版本的答案,技術的積累會產生難以想象的質變。大鵬一日同風起,然后一直起!起!起?。ǔ哆h了...回歸主題)。

      會用和看懂是兩個概念,假如你不趕時間的話,我愿用我蹩腳的解釋,帶你去看看作者的匠心獨具。先上第一段熱乎的代碼:

      語言的盡頭并不是C語言,機器無法執行一段C代碼,她需要經編譯,匯編等等操作最終形成可執行的機器碼,當然我們是看不懂的,所以我們要理解,C語言首先要變成匯編代碼,那么一條語句就可能編程好幾句。

      當你從裸機編程切換到OS調度機制的時候,本質上來講比單純的裸機,CPU需要執行的代碼更多更復雜了,機器的性能相對是降低了,為了盡量降低這種額外的開銷,于是就出現了開局default的操作,這完全是站在機器的角度上選擇結果,軟件少一次的case判斷,變成匯編語言就是可以少執行好幾條語句,節省掉多個機器周期。


      接下來:讓我們看一下兩種運行任務的方式:

//運行任務
#define RunTask(TaskName,TaskID)  
do 
{ 
	if (timers[TaskID]==0) 
	{ 
		TASK d=TaskName(); 
		while(timers[TaskID]!=d) 
		timers[TaskID]=d;
	} 
} while(0);
//運行任務,前面的任務優先保證執行
#define RunTaskA(TaskName,TaskID)
do 
{ 
	if (timers[TaskID]==0) 
	{ 
		TASK d=TaskName(); 
		while(timers[TaskID]!=d) 
		timers[TaskID]=d;
		continue;
	} 
} while(0);

    先看下任務是如何運行的,先判斷該任務對應的阻塞時間是否到達:

    1. 沒到達的情況下,不運行任務,結束執行。

     2.時間到,timers倒計時為0,執行任務,并返回阻塞時間,第一個細節操作來了,先判斷timers是否等于返回的阻塞時間,如果不等于則進行賦值,這里是不是多此一舉,不用判斷直接賦值多好,去掉while判斷。你能這么想是因為你站在程序員的角度上,換一個角度,你站在機器的角度上來考慮問題,while判斷和賦值操作的運行時間,假定賦值操作需要更多的執行時間開銷,那么加一條while判斷,再相等的情況下,是否就不需要執行賦值操作了,可以節省更多的操作時間,二當需要賦值的情況下,可能也就加一條簡單的判斷操作,我是這樣的理解的,當然也可能不對,只是給你提供一條思路。

      對比任務和函數的區別:函數的返回值一般給到的是變量,作為函數執行的輸出(當然是純軟的情況下,有硬件參與的情況下,更多的是硬件對應的執行動作),任務的返回值的意義是:阻塞時間,將值記錄到任務對應的timers數組中,提供給任務框架進行計時操作。

      RunTask和RunTaskA的最大區別,就是continue的操作,執行完任務后,理論上任務返回的阻塞時間可以是任意值,當返回值為0時,代表著任務并未阻塞,這個是帶有continue操作的任務將會重新運行該任務,也就是TaskA優先保證執行。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關注 151
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 麻豆免费看 | 久久靖品 | 久久综合香蕉国产蜜臀av | 男人扣女人逼视频 | 亚洲午夜精品久久久久久高潮 | 日本在线看片免费人成视频 | 牛鞭擦进少妇的下身 | 香港三级韩国三级日本三级 | 国产精品久久久不卡 | 久久久久久久人妻无码中文字幕爆 | 国产电视伦理怡红院在线观看 | 国产成熟女人性满足视频 | 久久99国产精品亚洲 | 一本到不卡免费一区二区 | 亚洲成人黄色av | 男女啪啪做爰高潮全过有网站 | 7777精品伊人久久久大香线蕉 | 扒开粉嫩小泬舌头伸进去视频 | 亚洲色爱图小说专区 | 爆乳无码中文字幕在线观看 | 天堂av性爱在线 | 99精品视频在线看 | 精品乱码久久久久久中文字幕 | 国产精品刮毛 | www.com超碰| 国产自精品 | 亚洲AV无码日韩AV无码网站冲 | 人妻夫の上司犯感との中文字幕 | 第一区在线| VA在线看国产免费 | 亚洲熟女色情网中文字幕 | 国产精品国产三级国产aⅴ9色 | 免费日韩在线视频 | 在线观看国产免费视频 | 香蕉精品视频在线观看 | 国产在线一区二区三区视频 | 免费精品久久久久久久一区二区 | 337p日本欧洲亚洲大胆艺术图 | 人人99精| 粉色视频成人免费观看 | 亚洲精品亚洲人成在线观看麻豆 |