第七講 臨界區保護(關閉調度)


第七講 臨界區保護
臨界資源:
臨界資源是指一次僅允許一個線程訪問的共享資源。他可以是一個具體的 硬件設備,也可以是一個 變量,一塊 緩沖區。
不論是硬件臨界資源還是軟件臨界資源,多個線程必須互斥的對他們進行訪問。
臨界區:
每個線程中訪問(操作)臨界資源的那段代碼稱為臨界區(Critical Section),我們每次只允許一個線程進入臨界區。
臨界區保護方法:
1.關閉系統調度保護臨界區
(1)禁止調度
void thread_entry(void *parameter)
{
while(1)
{
rt_enter_critical();//調度器上鎖,禁止線程切換,僅響應中斷
臨界區
rt_exit_critical();//調度器解鎖
}
}
(2)關閉中斷(更暴力)
因為所有線程的調度都是建立在中斷基礎之上的,關閉中斷后,自然就無法進行線程切換,線程也不會對其他線程搶占。
void thread_entry()
{
rt_base_t level;
while(1)
{
level=rt_hw_interrupt_disable();//關閉中斷
臨界區
rt_hw_interrupt_enable(level);//開啟中斷
}
}
 
2.互斥特性保護臨界區
信號量,互斥量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM