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

正文內(nèi)容

化工大學(xué)windows多線程編程-文庫吧

2024-12-19 10:52 本頁面


【正文】 個進程中的線程調(diào)用TerminateThread函數(shù) ④ 包含線程的進程終止 ① 線程返回函數(shù) ? 線程中創(chuàng)建的 C++類對象能夠正常撤銷; ? 操作系統(tǒng)將正確地釋放線程堆棧使用的內(nèi)存; ? 系統(tǒng)將線程的退出代碼設(shè)置為線程函數(shù)的返回值; ? 系統(tǒng)將遞減線程內(nèi)核對象的使用計數(shù)。 ? 線程調(diào)用這個函數(shù),強制線程終止運行; ? 操作系統(tǒng)清除該線程使用的所有系統(tǒng)資源。 ? C++類對象將不被撤銷。 VOID ExitThread(DWORD dwExitCode)。 ② ExitThread函數(shù) ? 能夠撤銷任何線程; ? 線程的內(nèi)核對象的使用計數(shù)也被遞減; ? 異步運行的函數(shù); ? 不撤銷線程的堆棧,直到進程終止。 BOOL TerminateThread(HANDLE hThread,DWORD dwExitCode)。 ③ TerminateThread函數(shù) ④ 在進程終止運行時撤銷線程 ? ExitProcess 和 TerminateProcess函數(shù)可以終止線程,將會終止進程中的所有線程; ? ExitProcess只能強制執(zhí)行本進程的退出; ? TerminateProcess在一個進程中強制結(jié)束其他的進程; ? 進程所使用的資源被清除; ? C++對象撤銷函數(shù)沒有被調(diào)用。 VOID ExitProcess(UINT uExitCode)。 BOOL TerminateProcess(HANDLE hProcess, UINT uExitCode)。 ④ 在進程終止運行時撤銷線程 4 一個簡單的 Windows多線程程序(例 1) include include iostream using namespace std。 DWORD WINAPI ThreadFunc(PVOID pvParam) { coutCreated thread says 39。hello World!39。endl。 return 0。 } int main() { HANDLE ThreadHandle = CreateThread(NULL,0,ThreadFunc,NULL,0,NULL)。 Sleep(100)。 coutMain thread says 39。Hello World!endl。 getchar()。 return 0。 } 線程間通信 ? 操作系統(tǒng)隨機調(diào)度線程,程序員不能預(yù)知線程的執(zhí)行順序 ? 下面兩種情況下,線程間需要通信 ? 當(dāng)有多個線程訪問共享資源而不希望共享資源遭到破壞;(互斥) ? 當(dāng)一個線程需要將某個任務(wù)已經(jīng)完成的情況通知另外一個或多個線程時。(同步) ? Windows線程通信方法主要有互鎖函數(shù)、臨界段、 事件、互斥量、信號量 線程間通信 1. 互鎖函數(shù) 2. 臨界段 3. 事件 4. 互斥量 5. 信號量 互鎖函數(shù) ? 互鎖函數(shù)是用來解決原子訪問的,主要針對變量的原子訪問; ? 原子訪問:當(dāng)線程訪問資源時,能夠確保沒有其它線程同時訪問相同的資源。 Long g_x = 0。 //全局變量 DWORD WINAPI ThreadFunc1 (PVOID pvParam) { g_x++。 return 0。 } DWORD WINAPI ThreadFunc2 (PVOID pvParam) { g_x++。 return 0。 } MOV EAX, [g_x] INC EAX MOV [g_x], EAX 遞增以原子方式運行 互鎖函數(shù)(例) 互鎖函數(shù) LONG InterlockedExchangeAdd()( PLONG plAddend, LONG lIncrement)。 Long g_x=0。 //全局變量 DWORD WINAPI ThreadFunc1 (PVOID pvParam) { InterlockedExchangeAdd(g_x,1)。 return 0。 } DWORD WINAPI ThreadFunc2 (PVOID pvParam) { InterlockedExchangeAdd(g_x,1)。 return 0。 } 互鎖函數(shù) ? 以原子操作方式用第二個參數(shù)的值取代第一個參數(shù)的當(dāng)前值。 LONG InterlockedExchange ()( PLONG plTarget, LONG lValue)。 LONG InterlockedExchangePointer ()( PVOID* ppvTarget, PVOID pvValue)。 互鎖函數(shù) ? 比較第一個參數(shù)所指的值和第三個參數(shù)的值,如果相等,則將第一個參數(shù)所指的值置為第二個參數(shù),如果不相等則不進行任何操作。 LONG InterlockedCompareExchange ()( PLONG plDestination, LONG lExchange, LONG lComparand)。 LONG InterlockedCompareExchangePointer ()( PVOID* ppvDestination, PVOID pvExchange, PVOID pvComparand)。 臨界段 ? 互鎖函數(shù):以原子操作方式修改單個值 ? 臨界段:以原子方式修改復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。 ? 臨界段:關(guān)鍵代碼段,是指一小段代碼,同一個時刻,只能有一個線程具有訪問權(quán)。 ? 多個線程訪問同一個臨界區(qū)的原則: ? 一次最多只能一個線程停留在臨界區(qū)內(nèi); ? 不能讓一個線程無限地停留在臨界區(qū)內(nèi),否則其它線程將不能進入該臨界區(qū) 臨界段 相關(guān) API函數(shù) ? 首先定義一個臨界段對象(通常全局變量) CRITICAL_SECTION cs ? 臨界段對象初始化 InitializeCriticalSection (cs) ? 進入臨界段 EnterCriticalSection (cs) ? 離開臨界段 LeaveCriticalSection (cs) ? 釋放臨界段對象 DeleteCriticalSection (cs) 臨界段 例 includ
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1