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

正文內(nèi)容

第10章其他編程-閱讀頁(yè)

2024-11-06 13:29本頁(yè)面
  

【正文】 ialogs, StdCtrls,unit2。 ListBox1: TListBox。 procedure Button1Click(Sender: TObject)。 第 10章 其他編程 線(xiàn)程同步 var Form1: TForm1。 // 聲明臨界區(qū)資源記錄變量 implementation {$R *.dfm} procedure (Sender: TObject)。 // 初始化臨界區(qū) (False)。 end。 ( 4)在系統(tǒng)自動(dòng)新建的 Unit2單元中輸入程序代碼: unit Unit2。 // 在此要添加 Windows和 SysUtils Type {以下是 TinitThread類(lèi)定義 } TInitThread = class(TThread) protected procedure ShowResult。 override。 第 10章 其他編程 線(xiàn)程同步 implementation uses Unit1。 // 數(shù)組大小 var next:integer=0。 A:array [1..SIZE] of integer。 var i:integer。 if tag=2 then begin // 兩個(gè)線(xiàn)程均執(zhí)行完畢 for i:=1 to SIZE do //在列表框中顯示數(shù)組各元素值 (intToStr(A[i]))。 // 移去臨界區(qū) end。 第 10章 其他編程 線(xiàn)程同步 procedure 。 begin EnterCriticalSection(CS)。 Inc(next)。 end。 // 臨界區(qū)終止 Synchronize(ShowResult)。 end. 第 10章 其他編程 線(xiàn)程同步 ( 5)單擊 F9運(yùn)行程序,結(jié)果如圖所示。 第 10章 其他編程 線(xiàn)程同步 2. 互斥 (1)互斥( mutex)與臨界區(qū)非常相似,但有兩個(gè)主要區(qū)別: ●互斥可用于不同進(jìn)程的線(xiàn)程間同步,而臨界區(qū)不可; ●互斥可被賦予一個(gè)字符串名,通過(guò)該名字可創(chuàng)建該互斥對(duì)象的 附加句柄。 bInitialOwner:BOOL。stdcall。 ● BInitialOwner參數(shù)用于指出創(chuàng)建互斥對(duì)象的線(xiàn)程是否要成為此互斥對(duì) 象的擁有者,該參數(shù)為 false表示互斥對(duì)象沒(méi)有擁有者。 第 10章 其他編程 線(xiàn)程同步 (3)互斥對(duì)象不再使用時(shí),應(yīng)調(diào)用 CloseHandle()過(guò)程來(lái)關(guān)閉它。 (4)為了防止其他線(xiàn)程進(jìn)入同步區(qū)代碼,需使用 aitForSingleObject() 函數(shù),原型為: function WaitForSingleObject(hHandle: Thandle。stdcall。程序兩個(gè)單元文件的內(nèi)容分別為: // 文件 unit Unit1。 type TForm1 = class(TForm) Button1: TButton。 ListBox1: TListBox。 end。 hMutex:THandle=0。 begin hMutex:=CreateMutex(nil,False,nil)。 // 創(chuàng)建 TinitThread線(xiàn)程對(duì)象并執(zhí)行 (False)。 end. 第 10章 其他編程 線(xiàn)程同步 //文件 unit Unit2。 type TInitThread = class(TThread) protected procedure ShowResult。 override。 第 10章 其他編程 線(xiàn)程同步 implementation uses Unit1。 // 數(shù)組大小 var next:integer=0。 A:array [1..SIZE] of integer。 var i:integer。 if tag=2 then begin {兩個(gè)線(xiàn)程均執(zhí)行完畢 } for i:=1 to SIZE do // 在列表框中顯示數(shù)組各元素值 (intToStr(A[i]))。 // 關(guān)閉互斥對(duì)象 end。 第 10章 其他編程 線(xiàn)程同步 procedure 。 begin if WaitForSingleObject(hMutex,INFINITE) = WAIT_OBJECT_0 then {此時(shí) , 若要擁有 hMutex互斥對(duì)象的線(xiàn)程將睡眠 , 用來(lái)禁止其他線(xiàn)程進(jìn)入此同步區(qū)域的代碼 } begin for i:=1 to SIZE do // 為數(shù)組各元素賦值 begin A[i]:=next。 Sleep(5)。 end。 // 釋放互斥量 Synchronize(ShowResult)。 end. 第 10章 其他編程 DLL應(yīng)用和開(kāi)發(fā) DLL DLL( Dynamic Link Library),即動(dòng)態(tài)鏈接庫(kù),它就是程序模塊,包括 編譯過(guò)的可執(zhí)行代碼 、數(shù)據(jù)或資源,能夠被其他的 Windows應(yīng)用程序共享 。 Windows系統(tǒng)文件 、 、 Win32系統(tǒng)的動(dòng)態(tài)鏈接庫(kù) 、進(jìn)程和線(xiàn)程的管理 Win32消息 。 第 10章 其他編程 使用 DLL的優(yōu)點(diǎn) 1. 節(jié)省資源 動(dòng)態(tài)鏈接不將所調(diào)用的函數(shù)代碼拷貝到應(yīng)用程序的可執(zhí)行文件 中,而是應(yīng)用程序運(yùn)行時(shí),才動(dòng)態(tài)地裝載 DLL,其代碼將被映 射到進(jìn)程的地址空間中,當(dāng)要執(zhí)行所調(diào)用 DLL中的函數(shù)時(shí),根 據(jù)鏈接產(chǎn)生的重定位信息,轉(zhuǎn)去執(zhí)行 DLL中相應(yīng)的函數(shù)代碼。線(xiàn)程是相互獨(dú)立的所有線(xiàn)程可以共享 DLL 的數(shù)據(jù) 。 第 10章 其他編程 使用 DLL的優(yōu)點(diǎn) 4. 獨(dú)立于編程語(yǔ)言 在一種開(kāi)發(fā)環(huán)境下設(shè)計(jì)的 DLL程序,可以在其他的環(huán)境中使用。 第 10章 其他編程 創(chuàng)建 DLL 創(chuàng)建 DLL的步驟是: 首先創(chuàng)建一個(gè)新的 DLL項(xiàng)目(如 project1),文件頭部為: LibraryProject1。形式為: exports // 引出函數(shù)名或過(guò)程名 函數(shù)名 name 39。 // 函數(shù)名與函數(shù)引用名通常取為相同 函數(shù)引用名是使用該 DLL文件的應(yīng)用程序聲明引用 DLL函數(shù)或 過(guò)程時(shí)的名字。stdcall。39。 對(duì)項(xiàng)目進(jìn)行編譯即形成 DLL文件,可被其它項(xiàng)目調(diào)用。再設(shè)計(jì)一個(gè)主程序調(diào)用 DLL中的函數(shù)在主程序中輸入兩個(gè)整數(shù),通過(guò)調(diào)用該 DLL,即可求出較大的數(shù)。選擇主菜單的 File?New?Others… 菜 單項(xiàng),在“ New Items”對(duì)話(huà)框中雙擊“ DLL Wizard”圖標(biāo),單 擊 OK按鈕。 // DLL項(xiàng)目名為 Max uses SysUtils, Classes。stdcall。 end。MaxNum39。 ( 4)選擇主菜單下的 Project?Compile Max(或用 Ctrl+F9 快捷鍵)菜單項(xiàng),對(duì) ,即生成 。該應(yīng)用程 序的界面如圖所示,所使用的組件及其屬性見(jiàn)下一頁(yè)表中。 interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls。 Label2: TLabel。 Edit1: TEdit。 Label4: TLabel。 Button1: TButton。 end。 implementation {$R *.dfm} 第 10章 其他編程 創(chuàng)建 DLL function MaxNum(Num1,Num2:integer):integer。external 39。 name 39。 // 對(duì) DLL函數(shù)進(jìn)行外部聲明 procedure (Sender: TObject)。 MX:integer。 N2:=strtoint()。 // 調(diào)用 DLL函數(shù) :=inttostr(MX)。 end. 第 10章 其他編程 創(chuàng)建 DLL 程序的運(yùn)行結(jié)果如圖所示。 在調(diào)用 DLL的應(yīng)用程序單元文件中,需要在 Implementation之后對(duì) DLL函數(shù)進(jìn)行外部聲明,形式如下: Implementation function 函數(shù)名(參數(shù)表):類(lèi)型名; stdcall;External 39。; 裝載時(shí)調(diào)用 DLL程序執(zhí)行速度快,效率高。 DLL程序一旦加載就一直駐留在應(yīng)用程序地址空間。 在運(yùn)行時(shí)用 Windows的 API函數(shù) LoadLibary和 GetProcAddress函數(shù)動(dòng)態(tài)地獲得 DLL函數(shù)或過(guò)程的入口地址,再使用FreeLibary進(jìn)行釋放。 Ihnd:Thandle。 其中 Aptr、 Ihnd兩個(gè)變量必須定義, RetVal是 DLL函數(shù)的返回 值,視具體情況而定。路徑: DLL文件名 39。 1)創(chuàng)建 (1) 新建一個(gè) DLL項(xiàng)目。編譯此文件生成 library MyCalendar。39。 {$R *.res} Exports ShowCalendar name 39。 // 聲明 DLL函數(shù) begin end. 第 10章 其他編程 調(diào)用 DLL (3) 選擇主菜單下的 File?New?Form,新建一個(gè)窗體,在其中放 置一個(gè) Tcalendar組件(該組件位于組件面板的 Samples選項(xiàng) 卡上,圖標(biāo)為 )和一個(gè) Bevel組件,所設(shè)計(jì)的窗體如圖 所示,所使用的組件及其屬性列于下一頁(yè)表中。 以下是 : unit Unit1。 type TCalForm = class(TForm) // 窗體定義 Calendar1: TCalendar。 Label1: TLabel。 CMBMonth: TComboBox。 第 10章 其他編程 調(diào)用 DLL btnOK: TBitBtn。 procedure FormCreate(Sender: TObject)。 procedure EditYearChange(Sender: TObject)。 var Key: Char)。 procedure btnCancelClick(Sender: TObject)。 第 10章 其他編程 調(diào)用 DLL //聲明要引出的函數(shù) function ShowCalendar(AHandle:THandle。stdCall。 //窗體創(chuàng)建事件 var i:integer。 :=。 end。//ComboBox事件 begin :=(Sender as TComboBox).ItemIndex+1。 procedure (Sender: TObject)。 end。 var Key: Char)。039。939。 Beep。 e
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1