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

正文內(nèi)容

化工大學(xué)windows多線程編程(已修改)

2025-01-06 10:52 本頁面
 

【正文】 第二章 Windows多線程編程 內(nèi)容 1. Windows操作系統(tǒng)的一些基本知識 2. Win32 API線程庫 3. 線程間通信 Windows操作系統(tǒng)的一些基本知識 1. API 2. 內(nèi)核對象及句柄 API ( Application Programming Interface ) ? API操作系統(tǒng)留給應(yīng)用程序的一個調(diào)用接口,應(yīng)用程序通過調(diào)用操作系統(tǒng)的 API 而使操作系統(tǒng)去執(zhí)行應(yīng)用程序的命令(動作)。 ? Windows API是一套用來控制 Windows的各個部件的外觀和行為的預(yù)先定義的 Windows函數(shù)。 ? Win32 API即為 Microsoft 32位平臺的應(yīng)用程序編程接口。 Win32平臺上運(yùn)行的應(yīng)用程序都可以調(diào)用這些函數(shù)。 ? 32與 64位 API函數(shù)聲明上沒有明顯區(qū)別,但 64位編程是需要下載相應(yīng)的平臺 SDK API ( Application Programming Interface ) ? 直接用 win32 API編寫的應(yīng)用程序,程序的執(zhí)行代碼小,運(yùn)行效率高 ? MFC用類庫的方式將 win32 API 進(jìn)行封裝 , 以類的方式提供給開發(fā)者 ? Framework類庫提供了所有應(yīng)用程序模型都要使用的一個面向?qū)ο蟮?API集合 內(nèi)核對象及句柄 ? 當(dāng)應(yīng)用程序要與系統(tǒng)設(shè)備進(jìn)行交互的時候,將使用到內(nèi)核對象。 ? 出于安全的考慮,進(jìn)程是不能直接訪問內(nèi)核對象的,操作系統(tǒng)提供了對應(yīng)的函數(shù)來對它們進(jìn)行訪問。 ? 內(nèi)核對象是由操作系統(tǒng)內(nèi)核分配, 只能由內(nèi)核訪問的數(shù)據(jù)結(jié)構(gòu) ,用來管理各種系統(tǒng)資源。 ? 內(nèi)核對象包括: 存取符號對象、事件對象、文件對象、作業(yè)對象、互斥對象、管道對象、等待計(jì)時器對象等都是內(nèi)核對象。編程時經(jīng)常要創(chuàng)建、打開和操作它們。 內(nèi)核對象及句柄 ? 內(nèi)核對象由內(nèi)核擁有,各個進(jìn)程可以共享內(nèi)核對象。進(jìn)程中止執(zhí)行,它使用的內(nèi)核對象并不一定會被撤銷。 ? 每個內(nèi)核對象都有一個計(jì)數(shù)器來存儲有多少個進(jìn)程在使用它的信息。 ? 進(jìn)程調(diào)用時,計(jì)數(shù)器增 1,調(diào)用結(jié)束,計(jì)數(shù)器減 1。 ? 內(nèi)核對象計(jì)數(shù)器為零時,銷毀此內(nèi)核對象。 內(nèi)核對象及句柄 ? 內(nèi)核對象有安全描述符的保護(hù),安全描述符描述了誰創(chuàng)建了該對象以及誰能夠使用該對象。 ? 用于創(chuàng)建內(nèi)核對象的函數(shù)幾乎都有一個指向SECURITY_ATTRIBUTES 結(jié)構(gòu)的指針作為其參數(shù)。 ? 大多數(shù)應(yīng)用程序通過傳 NULL值,創(chuàng)建具有默認(rèn)安全性的對象。如果想限制別人對對象的訪問,就需要單獨(dú)創(chuàng)建一個 SECURITY_ATTRIBUTES對象并對其初始化。 內(nèi)核對象及句柄 ? 句柄: 創(chuàng)建內(nèi)核對象時,函數(shù)的返回值,標(biāo)記該內(nèi)核對象。 ? 句柄表: 進(jìn)程被初始化時,系統(tǒng)給進(jìn)程分配一個句柄表,用于保存該進(jìn)程使用的內(nèi)核對象的信息,而句柄值則是相應(yīng)內(nèi)核對象在句柄表中的索引值,因此句柄值是進(jìn)程相關(guān)的。 內(nèi)核對象及句柄 ? 內(nèi)核對象創(chuàng)建 ? 當(dāng)利用 creat*函數(shù)來創(chuàng)建內(nèi)核對象時,調(diào)用該函數(shù)的時候內(nèi)核就為該對象分配一個內(nèi)存塊,并進(jìn)行初始化,然后內(nèi)核再掃描該進(jìn)程的句柄表,初始化一條記錄并放在句柄表中。 ? 關(guān)閉內(nèi)核對象 ? 無論進(jìn)程怎樣創(chuàng)建內(nèi)核對象,在不使用該對象的時候都應(yīng)當(dāng)通過 Bool CloseHandle(HANDLE hobj)來向操作統(tǒng)聲明結(jié)束對該對象的訪問。 Win32 API線程庫 1. 創(chuàng)建線程的基本問題 2. 創(chuàng)建線程的 API函數(shù) 3. 操作線程的 API 4. 一個簡單的 Windows多線程程序 1 創(chuàng)建線程的基本問題 ? 線程可以由進(jìn)程中的任意線程創(chuàng)建,而進(jìn)程的主線程在進(jìn)程加載時自動創(chuàng)建。 ? 每個線程都有自己的進(jìn)入點(diǎn)函數(shù)。 ? 主線程的進(jìn)入點(diǎn)函數(shù) 進(jìn)入點(diǎn) 應(yīng)用程序類型 WinMain 需要 ANSI字符和字符串的 GUI應(yīng)用程序 wWinMain 需要 Unicode字符和字符串的 GUI應(yīng)用程序 Main 需要 ANSI字符和字符串的 CUI應(yīng)用程序 Wmain 需要 Unicode字符和字符串的 CUI應(yīng)用程序 – 線程函數(shù)的返回值是該線程的退出代碼 – 線程函數(shù)應(yīng)盡可能使用函數(shù)參數(shù)和局部變量 線程函數(shù) 線程的入口點(diǎn) DWORD WINAPI ThreadFunc ( PVOID pvParam ) { DWORD dwResult = 0。 … … return (dwResult)。 } 2 創(chuàng)建線程的 API函數(shù) ? 創(chuàng)建線程:系統(tǒng)創(chuàng)建一個線程內(nèi)核對象。 ? 線程內(nèi)核對象不是線程本身,而是操作系統(tǒng)用來管理線程的較小的數(shù)據(jù)結(jié)構(gòu) ? 在進(jìn)程的地址空間分配內(nèi)存,供線程的堆棧使用 HANDLE CreateThread( PSECURITY_ATTRIBUTES psa, DWORD cbStack, PTHREAD_START_ROUTINE pStartAddr, PVOID pvParam, DWORD fdwCreate, PDWORD pdwThreadId)。 2 創(chuàng)建線程的 API函數(shù) NULL 0 函數(shù)地址 函數(shù)參數(shù)NULL 控制創(chuàng)建線程標(biāo)志 CREATE_SUSPENDED; 0 線程 ID ? 暫停線程 DWORD SuspendThread(HANDLE hThread) ? 返回值是線程的前一個暫停計(jì)數(shù) ? 暫停計(jì)數(shù):是線程內(nèi)核對象的一個內(nèi)部值。 ? 使用要小心,因?yàn)椴恢罆和>€程運(yùn)行時它在進(jìn)行什么操作??赡茉斐伤梨i 3 操作線程的 API 3 操作線程的 API ? 恢復(fù)線程 DWORD ResumeThread(HANDLE hThread)。 ? 返回值是線程的前一個暫停計(jì)數(shù) ? 該函數(shù)用于將處于暫停狀態(tài)的線程置于就緒狀態(tài),使其參加線程調(diào)度。 3 操作線程的 API ? 使線程睡眠 VOID Sleep (DWORD dwMilliseconds )。 ? 該函數(shù)是線程暫停自己的運(yùn)行,直到睡眠時間過去為止 ? 當(dāng)線程調(diào)用這個函數(shù)時,它自動放棄剩余的時間片,迫使系統(tǒng)進(jìn)行線程調(diào)度。 ? Windows不是實(shí)時的操作系統(tǒng)。 3 操作線程的 API ? 終止線程 ① 線程函數(shù)返回(最好) ② 通過調(diào)用 ExitThread函數(shù),線程將自行撤銷 ③ 同一個進(jìn)程或另一
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1