嵌入式軟體有裸機的,也有作業系統的軟體,我們寫的功能肯定會出現有些變數是共用的,當多處修改這個變數的時候會出現,資源競爭問題,資源進行的現象如下:
對於下面的程式
/* 全域性變數 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正則化的作用 選擇經驗風險和模型複雜度同時較小的...