优化缩短关中断的时间
文章目錄
- 1 優(yōu)化縮短關(guān)中斷的時(shí)間
- 1.1 提取耗時(shí)操作
- 1.2 劃分為多次開關(guān)中斷
1 優(yōu)化縮短關(guān)中斷的時(shí)間
無(wú)論是開關(guān)全局中斷還是關(guān)指定中斷,都會(huì)對(duì)中斷的響應(yīng)時(shí)間造成影響。關(guān)中斷的時(shí)間越長(zhǎng),中斷被延遲響應(yīng)的時(shí)間也越長(zhǎng),所以在編寫代碼時(shí),要盡可能地保護(hù)關(guān)中斷的時(shí)間要盡可能地短。但是有時(shí)會(huì)發(fā)現(xiàn),任務(wù)或低優(yōu)先級(jí)中斷訪問(wèn)資源的時(shí)間較長(zhǎng),此時(shí)我們需要調(diào)整代碼,縮短關(guān)中斷時(shí)間。
1.1 提取耗時(shí)操作
這種思路簡(jiǎn)而言之是:調(diào)整代碼,優(yōu)化訪問(wèn)資源的時(shí)間,將部分耗時(shí)的操作從原操作中提取出來(lái)。
在之間的示例中,可以看到有個(gè)鏈表遍歷。如果單就鏈表遍歷本身來(lái)看,其速度還是比較快的,但是由于遍歷過(guò)程中有使用xprintf打印,如果考慮打印是通過(guò)串口輸出,那么整個(gè)遍歷過(guò)程將會(huì)比較耗時(shí)。當(dāng)結(jié)點(diǎn)數(shù)量很多,串口的波特率較低時(shí),其耗時(shí)就更長(zhǎng)。
在這種情況下,如果采用關(guān)中斷的方式,將會(huì)導(dǎo)致中斷長(zhǎng)時(shí)間的關(guān)閉,產(chǎn)生很大的影響。通過(guò)調(diào)整代碼,我們可以將打印這個(gè)耗時(shí)操作給提取出來(lái),不在鏈表遍歷過(guò)程中執(zhí)行。這樣鏈表遍歷過(guò)程就可以快速地執(zhí)行完畢,從而盡快地讓中斷執(zhí)行。
1.2 劃分為多次開關(guān)中斷
有時(shí)我們會(huì)對(duì)大塊的代碼進(jìn)行開關(guān)中斷保護(hù),代碼塊越大,往往執(zhí)行時(shí)間也越多。
但如果對(duì)這些大塊代碼分析可能會(huì)發(fā)現(xiàn),并不是所有的代碼都涉及到對(duì)共享資源的訪問(wèn)。所以有時(shí)可以將這些大塊代碼進(jìn)行"劃分",將原本對(duì)整個(gè)大塊代碼進(jìn)行開關(guān)中斷保護(hù),分隔為多塊保護(hù)。這樣就相比之前就允許中斷盡可能早的響應(yīng)。
參考資料:
總結(jié)
以上是生活随笔為你收集整理的优化缩短关中断的时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 家具板10大品牌各位知道吗?哪个更好?
- 下一篇: 请求模式解决共享资源冲突