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

正文內(nèi)容

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

2025-01-02 10:52本頁面
  

【正文】 psa, // 安全屬性的指針 BOOL bInitialOwner, // 初始化互斥對象的所有者 PCTSTR pszName // 指向互斥對象名的指針 )。 } 互斥量 ? 互斥量是一個種內(nèi)核對象,確保線程擁有對單個資源的互斥訪問權(quán)。 CloseHandle(hEvent)。 coutMain Thread: Create thread finishedendl。 break。 if(input==continue) { coutMain Thread: Let thread continue runendl。 cout。 coutMain Thread: input mand, pleaseendl。 string input。 coutMain Thread: New thread created.endl。 coutMain Thread: Creating new thread.endl。 } int main() { InitializeCriticalSection (cs)。 coutCreate Thread: Thread finished.endl。 coutCreate Thread: Thread runs again.endl。 WaitForSingleObject(phEvent,INFINITE)。 LeaveCriticalSection (cs)。 coutCreate Thread: Create thread is startedendl。 CRITICAL_SECTION cs。 ? 例子:用戶在主線程輸入命令,控制新建線程的運行。 ? 將事件設(shè)置為未通知狀態(tài) BOOL ResetEvent(HANDLE hEvent )。 事件 ? 其它進程中的線程可以獲得事件對象的訪問權(quán) HANDLE OpenEvent( DWORD fdwAccess, BOOL fInherit, PCTSTR pszName )。 ? 創(chuàng)建事件內(nèi)核對象,返回句柄。 ? 一個使用計數(shù) ? 一個布爾值,指明該事件是自動重置事件( false) ,還是人工重置事件( true); ? 一個布爾值,指明該事件是已通知狀態(tài),還是未通知狀態(tài)。 DWORD WaitForMultipleObject( DWORD dwCount, CONST HANDLE* phHandle, BOOL fWaitAll, DWORD dwMilliseconds )。 參數(shù) dwMilliseconds有兩個特殊值: ?0,則該函數(shù)立即返回; ?INFINITE,則線程被掛起,直到 hHandle所指向的對象變?yōu)橐淹ㄖ獱顟B(tài)。 ? 包含通知狀態(tài)和未通知狀態(tài)內(nèi)核屬性 的內(nèi)核對象有: ? 進程,線程 ,作業(yè),文件,控制臺輸入 ? 文件修改通知,事件,可等待定時器 ? 信號量,互斥量 ? 等待函數(shù):使線程進入等待狀態(tài) ,直到一個對象變?yōu)橐淹ㄖ獱顟B(tài)。 } 使用內(nèi)核對象的線程間通信 ? 互鎖函數(shù)和臨界段都是在用戶態(tài)實現(xiàn)線程通信的,優(yōu)點速度快 ? 用戶態(tài)機制只能實現(xiàn)同一進程內(nèi)線程通信。 LeaveCriticalSection (cs)。i++) { EnterCriticalSection (cs)。 } DWORD WINAPI ThreadFunc2(PVOID param) { for(int i=1。 LeaveCriticalSection (cs)。i++) { EnterCriticalSection (cs)。 DWORD WINAPI ThreadFunc1(PVOID param) { for(int i=1。 } 加上臨界段 include include fstream fstream file。 ()。 HANDLE hThread[2] = {ThreadHandle1,ThreadHandle2}。 HANDLE ThreadHandle1 = CreateThread(NULL,0,ThreadFunc1,NULL,0,NULL)。 } return 0。i=1000。 } return 0。i=1000。 ? 多個線程訪問同一個臨界區(qū)的原則: ? 一次最多只能一個線程停留在臨界區(qū)內(nèi); ? 不能讓一個線程無限地停留在臨界區(qū)內(nèi),否則其它線程將不能進入該臨界區(qū) 臨界段 相關(guān) API函數(shù) ? 首先定義一個臨界段對象(通常全局變量) CRITICAL_SECTION cs ? 臨界段對象初始化 InitializeCriticalSection (cs) ? 進入臨界段 EnterCriticalSection (cs) ? 離開臨界段 LeaveCriticalSection (cs) ? 釋放臨界段對象 DeleteCriticalSection (cs) 臨界段 例 include include fstream fstream file。 臨界段 ? 互鎖函數(shù):以原子操作方式修改單個值 ? 臨界段:以原子方式修改復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。 LONG InterlockedCompareExchange ()( PLONG plDestination, LONG lExchange, LONG lComparand)。 LONG InterlockedExchangePointer ()( PVOID* ppvTarget, PVOID pvValue)。 } 互鎖函數(shù) ? 以原子操作方式用第二個參數(shù)的值取代第一個參數(shù)的當(dāng)前值。 } DWORD WINAPI ThreadFunc2 (PVOID pvParam) { InterlockedExchangeAdd(g_x,1)。 //全局變量 DWORD WINAPI ThreadFunc1 (PVOID pvParam) { InterlockedExchangeAdd(g_x,1)。 } MOV EAX, [g_x
點擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1