freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

delphi多線程編程文庫-資料下載頁

2025-01-07 11:40本頁面
  

【正文】 理的資源,其方法的應用是: 第一步:把訪問主窗口(或主窗口控件資源)的代碼放到線程的 一個方法中; 第二步:是在線程對象的 Execute方法中,通過 Synchronize方法 使用該方法。 實例: procedure 。 begin Synchronize(update)。 end。 procedure 。 begin ......... end。 這里通過 Synchronize使線程方法 update同步。 二、使用 VCL類的 Look方法 在 Delphi的 IDE提供的構件中,有一些對象內(nèi)部提供了線程的同 步機制,工作線程可以直接使用這些控件,比如: Tfont, Tpen, TBitmap, TMetafile, Ticon等。另外,一個很重要的控件對象叫 TCanvas,提供了一個 Lock方法用于線程的同步,當一 個線程使用此 控件對象的時候,首先調(diào)用這個對象的 Lock方法,然后對這個控件 進行操作,完畢后再調(diào)用 Unlock方法,釋放對控間的控制權。 例如: 。 try 畫圖 finally 。 end。 {使用這個保護機制 ,保證不論有沒有異常, unlock都會被執(zhí)行 否則很可能會發(fā)生死鎖。在多線程設計的時候,應該很注意發(fā)生死 鎖的問題 } 三、 Waitfor方法 當一個線程應該等待另一個線程結束時,可以調(diào)用 Waitfor方法。 這個方 法屬于等待線程對象, Waitfor方法的原型如下 : Function Waitfor(Const Astring:string):string。 比如在前面最基本的線程的例子中,喚醒線程的語句中加上 。 。 。 那么所有的線程都必須等待 thread1運行完畢后才能運行,其中 包括主線程,可以預想,由于 thread1調(diào)用了主窗體的 Edit控件,那 么,在 thread1運行中間, Edie1也不會顯示。 這就告訴我們,這 樣的代碼是不能作為主線程的一部分的,如果 與主窗體連接的線程內(nèi)等待另一個線程結束,而另一個線程又要等待 訪問用戶界面,就可能是程序陷于死鎖。 這點在應用的時候要謹慎。 四、利用 Windows的 API 實現(xiàn)同步 Windows API函數(shù)提供了很多同步技術,下面簡要介紹。 1)臨界區(qū) 使用線程的時候,遇到的一個基本的問題,就是多個線程訪問同 一個對象,比如訪問相同的文件、 DLL、相同的通訊資源,特別是數(shù) 據(jù)庫的訪問,當多個線程對同一數(shù)據(jù)庫字段寫入的時候,其結果會出 現(xiàn)不確定性。 臨界區(qū)用于解決這個問 題,它可以保證線程使用敏感數(shù)據(jù)的時候, 阻賽其他的線程訪問名干數(shù)據(jù),使用時首先要初始化,其聲明一個 TRTLCriticalSection 類型的變量: var CS:TRTLCriticalSection。 初始化: initializeCriticalSection(cs)。 獨占 EnterCriticalSection(cs)。 解除獨占 LeaveCriticalSection(CS)。 使用臨界區(qū)是比較方便而且概念比較清晰的的線程同步機制,應用比 較廣泛。 請注意,臨界區(qū)只能在一 個進程內(nèi)使用,首先要標記出把數(shù)據(jù)作為臨 界區(qū)操作的那些代碼,在這部分代碼執(zhí)行前,計算機首先要查看一下全局 記錄,已確定是否有其它線程在臨界區(qū)中,同時也要查看這個臨界區(qū)是否 和第一個臨界區(qū)相關,也就是說同一個程序中可能會有幾個不同的臨界區(qū), 然后計算機再決定運行策略。 下面簡單的實例說明臨界區(qū)的用法: 《以下略》 2)互斥對象 3)信號量
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1