創(chuàng )建自定義的線(xiàn)程:目定義的線(xiàn)程必須從鉀hread派生新的子類(lèi),而且因為竹hread類(lèi)的Execute方法是純虛函數,所以必須重載Execute方法,將需要在線(xiàn)程中實(shí)現的任務(wù)代碼放在Execute方法中。如果E耽cute方法執行完畢,則線(xiàn)程結束并釋放線(xiàn)程占用??臻g?! 《嗑€(xiàn)程中VCL對象的使用:由于C 十Builde:不支持多線(xiàn)程同時(shí)訪(fǎng)問(wèn)vCL庫,所以在編寫(xiě)多線(xiàn)程序訪(fǎng)問(wèn)VCL時(shí)只能逐個(gè)地實(shí)現對VCL的訪(fǎng)問(wèn)。一般有兩種方法。對與一些具有鎖定功能的對象,可以在鎖定之后再進(jìn)行具體操作。如TCanva。類(lèi)有一個(gè)h祀k過(guò)程,在調用畫(huà)布作圖前,調用h屺k過(guò)程將畫(huà)布鎖定,作圖過(guò)程完成之后,調用utilock過(guò)程解除鎖定?! Th此ad類(lèi)也提供了Synchronize方法。當需要在線(xiàn)程中訪(fǎng)問(wèn)vCL對象屬性或調用方法時(shí),通過(guò)在Exe-cute中調用Syncllronize過(guò)程來(lái)避免對vCL的并發(fā)訪(fǎng)問(wèn)。程序運行期間的具體過(guò)程是由Synchronize過(guò)程來(lái)通知主線(xiàn)程,然后王線(xiàn)程在適當的時(shí)機來(lái)執行synchronize過(guò)程的參數列表中那個(gè)不帶參數的函數過(guò)程?! ≈匾绦騾^段保證一次只有一個(gè)線(xiàn)程具有訪(fǎng)問(wèn)公共數據塊的權利。一旦一個(gè)線(xiàn)程進(jìn)入重要程序段,其他的線(xiàn)程就無(wú)法執行這個(gè)重要程序段,一直要等到先進(jìn)入的線(xiàn)程離開(kāi)以后,其他的線(xiàn)程才可以進(jìn)入該重要程序段訪(fǎng)問(wèn)共享的變量和數據:在使用TCriticalsection時(shí),必須先用Acqnire進(jìn)入臨界區,訪(fǎng)問(wèn)結束后必須用Release釋放臨界區?! 《嗑€(xiàn)程間的同步:當程序中多個(gè)線(xiàn)程同時(shí)運行時(shí),可能會(huì )使用同一系統資源?;蛘咭粋€(gè)線(xiàn)程的運行要依賴(lài)另一個(gè)線(xiàn)程的完成。這就存在一個(gè)線(xiàn)程間的同步問(wèn)題。W1N20(多任務(wù)操作系統,系統內核提供了事件(Event)、互斥量(Mutex)、信號燈(Sem叩hore)等對象來(lái)控制線(xiàn)程間的同步。其中Event對象具有自己的安全屬性、訪(fǎng)問(wèn)權限和以下兩種狀態(tài)的一種:Signaled和nonsignaled。聲明:本文為轉載類(lèi)文章,如涉及版權問(wèn)題,請及時(shí)聯(lián)系我們刪除(QQ: 229085487),不便之處,敬請諒解!