BCB线程的互斥与同步
生活随笔
收集整理的這篇文章主要介紹了
BCB线程的互斥与同步
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? 線程的互斥與同步
??? 互斥控制是為了避免一個線程在使用某一個對象或全局變量與其他線程發生沖突。實現線程互斥的方法有: (1)?? 訪問代碼委托給VCL主線程執行。在線程中若要調用可視化的方法或訪問其屬性,可將執行代碼委托給VCL主線程執行,否則會發生并發訪問沖突。委托的方法是先將使用可視化組件的代碼單獨編成一個函數,函數原型是void 函數名(void),然后電泳TThread類的成員函數Synchronize(函數名)來調用它,VCL主線程順序執行所有組建對該組建的訪問(包括響應人機界面事件、windows系統事件等),從而不會發生沖突。 (2)?? 使用對象鎖。有些VCL類提供對象鎖,可以使用對象的LOCK與UNLOCK方法進行加鎖與解鎖。當訪問這些對象時,可調用LOCK方法鎖住對象,然后訪問該對象,訪問完畢后調用對象的UNLOCK方法釋放該對象。 (3)?? 使用臨界區對象。若要訪問一個全局變量,則可設置一個臨界區對象(TCritical Section)來實現互斥,該對象有Acquire與Release兩個方法。Acquire方法阻塞其他線程,執行臨界區代碼,而Release方法釋放等待進入臨界區的線程。例如:設Q為全局變量,Crit1為臨界區對象,在訪問Q進入臨界區時須執行Crit1.Acquire(),訪問后退出臨界區時須執行Crit1.Release()。 ?轉載于:https://www.cnblogs.com/fx_guo/archive/2007/10/08/1935628.html
總結
以上是生活随笔為你收集整理的BCB线程的互斥与同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vijos 1603 ----迷宫(矩阵
- 下一篇: .net 实现 URL重写,伪静态