第一章 第五節 嵌入式資源競爭問題 閆剛

2021-08-18 15:56:17 字數 1399 閱讀 2998

嵌入式軟體有裸機的,也有作業系統的軟體,我們寫的功能肯定會出現有些變數是共用的,當多處修改這個變數的時候會出現,資源競爭問題,資源進行的現象如下:

對於下面的程式

/* 全域性變數 ch*/

intch =

'a';

/* 執行緒1, 使用資源全域性變數ch */

void

thread1_main()

/* 執行緒2, 使用資源全域性變數ch */

void

thread2_main()

/* 主程式 */

void

main()

解決方法:

使用執行緒排程所,禁止在當前執行緒中修改共享資源變數的時候,os排程到其他執行緒!!

/* 全域性變數 ch*/

intch =

'a';

/* 執行緒1, 使用資源全域性變數ch */

void

thread1_main()

/* 執行緒2, 使用資源全域性變數ch */

void

thread2_main()

/* 主程式 */

void

main()

2. 更複雜的情況

多個執行緒,和中斷中都使用共同的資源ch ,我們該怎麼辦?

/* 全域性變數 ch*/

intch =

'a';

/* 執行緒1, 使用資源全域性變數ch */

void

thread1_main()

/* 執行緒2, 使用資源全域性變數ch */

void

thread2_main()

/* 中斷服務程式 */

void

irq_handler

(void)

/* 主程式 */

void

main()

解決方法:

當執行緒和終端都修改這個變數的時候,由於中斷的優先順序大於執行緒,我們需要進行關中斷的操作!!

/* 全域性變數 ch*/

intch =

'a';

/* 執行緒1, 使用資源全域性變數ch */

void

thread1_main()

/* 執行緒2, 使用資源全域性變數ch */

void

thread2_main()

/* 中斷服務程式 */

void

irq_handler

(void)

/* 主程式 */

void

main()

第一章 第五節 JFace

返回目錄 jface構建於swt之上,提供了swt的功能和mvc模式的易用性。swt使用直接的api提供了原生 raw 的控制項。例如,你建立乙個表 table 控制項,然後插入你想顯示的行和列的資料。jface提供了在swt之上的抽象層,所以您只需對抽象層程式設計,然後抽象層會呼叫swt api,...

python程式設計 第一章 第五節

前面已經提到,idle整合開發環境 ide 隨著python直譯器起安裝。pyhon 整合開發環境能夠幫助開發者提高開發效率 加快開發的速度。高效的ide一般會提供外掛程式 工具等幫助開發者提高效率。本書使用idle作為開發工具。本節簡要介紹另外三款免費的整合開發環境。eclipse中的pydev外...

統計學習方法第一章第五節

1.5正則化與交叉驗證 兩種模型選擇方法 一正則化 1模型選擇典型的方法就是正則化。正則化是結構風險最小化策略的實現,是在經驗風險上加乙個正則化項或罰項。正則化項一般是模型複雜度的單調遞增函式,模型越複雜,正則化值就越大。2正則化項可以取不同的形式 3正則化的作用 選擇經驗風險和模型複雜度同時較小的...