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

正文內(nèi)容

化工大學(xué)windows多線程編程-在線瀏覽

2025-01-30 10:52本頁面
  

【正文】 建內(nèi)核對(duì)象的函數(shù)幾乎都有一個(gè)指向SECURITY_ATTRIBUTES 結(jié)構(gòu)的指針作為其參數(shù)。如果想限制別人對(duì)對(duì)象的訪問,就需要單獨(dú)創(chuàng)建一個(gè) SECURITY_ATTRIBUTES對(duì)象并對(duì)其初始化。 ? 句柄表: 進(jìn)程被初始化時(shí),系統(tǒng)給進(jìn)程分配一個(gè)句柄表,用于保存該進(jìn)程使用的內(nèi)核對(duì)象的信息,而句柄值則是相應(yīng)內(nèi)核對(duì)象在句柄表中的索引值,因此句柄值是進(jìn)程相關(guān)的。 ? 關(guān)閉內(nèi)核對(duì)象 ? 無論進(jìn)程怎樣創(chuàng)建內(nèi)核對(duì)象,在不使用該對(duì)象的時(shí)候都應(yīng)當(dāng)通過 Bool CloseHandle(HANDLE hobj)來向操作統(tǒng)聲明結(jié)束對(duì)該對(duì)象的訪問。 ? 每個(gè)線程都有自己的進(jìn)入點(diǎn)函數(shù)。 … … return (dwResult)。 ? 線程內(nèi)核對(duì)象不是線程本身,而是操作系統(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)。 ? 使用要小心,因?yàn)椴恢罆和>€程運(yùn)行時(shí)它在進(jìn)行什么操作。 ? 返回值是線程的前一個(gè)暫停計(jì)數(shù) ? 該函數(shù)用于將處于暫停狀態(tài)的線程置于就緒狀態(tài),使其參加線程調(diào)度。 ? 該函數(shù)是線程暫停自己的運(yùn)行,直到睡眠時(shí)間過去為止 ? 當(dāng)線程調(diào)用這個(gè)函數(shù)時(shí),它自動(dòng)放棄剩余的時(shí)間片,迫使系統(tǒng)進(jìn)行線程調(diào)度。 3 操作線程的 API ? 終止線程 ① 線程函數(shù)返回(最好) ② 通過調(diào)用 ExitThread函數(shù),線程將自行撤銷 ③ 同一個(gè)進(jìn)程或另一個(gè)進(jìn)程中的線程調(diào)用TerminateThread函數(shù) ④ 包含線程的進(jìn)程終止 ① 線程返回函數(shù) ? 線程中創(chuàng)建的 C++類對(duì)象能夠正常撤銷; ? 操作系統(tǒng)將正確地釋放線程堆棧使用的內(nèi)存; ? 系統(tǒng)將線程的退出代碼設(shè)置為線程函數(shù)的返回值; ? 系統(tǒng)將遞減線程內(nèi)核對(duì)象的使用計(jì)數(shù)。 ? C++類對(duì)象將不被撤銷。 ② ExitThread函數(shù) ? 能夠撤銷任何線程; ? 線程的內(nèi)核對(duì)象的使用計(jì)數(shù)也被遞減; ? 異步運(yùn)行的函數(shù); ? 不撤銷線程的堆棧,直到進(jìn)程終止。 ③ TerminateThread函數(shù) ④ 在進(jìn)程終止運(yùn)行時(shí)撤銷線程 ? ExitProcess 和 TerminateProcess函數(shù)可以終止線程,將會(huì)終止進(jìn)程中的所有線程; ? ExitProcess只能強(qiáng)制執(zhí)行本進(jìn)程的退出; ? TerminateProcess在一個(gè)進(jìn)程中強(qiáng)制結(jié)束其他的進(jìn)程; ? 進(jìn)程所使用的資源被清除; ? C++對(duì)象撤銷函數(shù)沒有被調(diào)用。 BOOL TerminateProcess(HANDLE hProcess, UINT uExitCode)。 DWORD WINAPI ThreadFunc(PVOID pvParam) { coutCreated thread says 39。endl。 } int main() { HANDLE ThreadHandle = CreateThread(NULL,0,ThreadFunc,NULL,0,NULL)。 coutMain thread says 39。 getchar()。 } 線程間通信 ? 操作系統(tǒng)隨機(jī)調(diào)度線程,程序員不能預(yù)知線程的執(zhí)行順序 ? 下面兩種情況下,線程間需要通信 ? 當(dāng)有多個(gè)線程訪問共享資源而不希望共享資源遭到破壞;(互斥) ? 當(dāng)一個(gè)線程需要將某個(gè)任務(wù)已經(jīng)完成的情況通知另外一個(gè)或多個(gè)線程時(shí)。 Long g_x = 0。 return 0。 return 0。 Long g_x=0。 return 0。 return 0。 LONG InterlockedExchange ()( PLONG plTarget, LONG lValue)。 互鎖函數(shù) ? 比較第一個(gè)參數(shù)所指的值和第三個(gè)參數(shù)的值,如果相等,則將第一個(gè)參數(shù)所指的值置為第二個(gè)參數(shù),如果不相等則不進(jìn)行任何操作。 LONG InterlockedCompareExchangePointer ()( PVOID* ppvDestination, PVOID pvExchange, PVOID pvComparand)。 ? 臨界段:關(guān)鍵代碼段,是指一小段代碼,同一個(gè)時(shí)刻,只能有一個(gè)線程具有訪問權(quán)。 DWORD WINAPI ThreadFunc1(PVOID param) { for(int i=1。i++) { fileThreadFunc1 Outputiendl。 } DWORD WINAPI ThreadFunc2(PVOID param) { for(int i=1。i++) { fileThreadFunc2 Outputiendl。 } int main() { (,ios::out)。 HANDLE ThreadHandle2 = CreateThread(NULL,0,ThreadFunc2,NULL,0,NULL)。 WaitForMultipleObjects(2,hThread,TRUE,INFINITE)。 return 0。 CRITICAL_SECTION cs。i=1000。 fileThreadFunc1 Outputiendl。 } return 0。i=1000。 fileThreadFunc2 Outputiendl。 } return 0。 ? 內(nèi)核對(duì)象機(jī)制可以實(shí)現(xiàn)不同進(jìn)程內(nèi)線程的通信,缺點(diǎn)速度慢。 DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds )。 使用內(nèi)核對(duì)象的線程間通信 ? 等待函數(shù): 可以保證線程的同步 。 使用內(nèi)核對(duì)象的線程間通信 事件 ? 事件內(nèi)核對(duì)象是最簡(jiǎn)單的對(duì)象。 ? 當(dāng)人工重置事件得到通知時(shí),等待該事件的所有線程均變?yōu)榭烧{(diào)度事件; ? 當(dāng)自動(dòng)重置事件得到通知時(shí),等待該事件的線程中只有一個(gè)線程變?yōu)榭烧{(diào)度線程。 HANDLE CreateE
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1