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