資源描述:
《3.7windows2000xp的同步和通信機制》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、3.7Windows2000/XP的同步和通信機制3.7.1Windows2000/XP的同步和互斥機制3.7.2Windows2000/XP進程通信機制3.7.1Windows2000/XP的同步和互斥機制Windows2000/XP提供互斥對象、信號量對象和事件對象及相應系統(tǒng)調(diào)用,用于進程和線程的同步。同步對象都有一個用戶指定的對象名稱,不同進程中用同樣的對象名創(chuàng)建或打開對象,從而獲得該對象在本進程的句柄。從本質(zhì)上講,這些同步對象的能力是相同的,其區(qū)別在于適用場合和效率有所不同。CreateMutex創(chuàng)建互斥對象OpenMutex打開并返回一個已存在的互斥對象句柄,用于后
2、續(xù)訪問。ReleaseMutex釋放對互斥對象的占用,使之成為可用。信號量對象就是資源信號量,初始值所取范圍在0到指定最大值之間,用于限制并發(fā)訪問的線程數(shù)。相關API包括:CreateSemaphore創(chuàng)建一個信號量對象,在輸入?yún)?shù)中指定初值和最大值,返回對象句柄。OpenSemaphore打開并返回一個已存在的信號量對象句柄,用于后續(xù)訪問。ReleaseSemaphore釋放對信號量對象的占用,使之成為可用。事件對象相當于觸發(fā)器,用于通知一個或多個線程某事件的出現(xiàn),它的相關API包括:CreateEvent創(chuàng)建一個事件對象,返回對象句柄。OpenEvent打開并返回一個已存在的
3、事件對象句柄,用于后續(xù)訪問。SetEvent和PulseEvent設置指定事件對象為可用狀態(tài)。ResetEvent設置指定事件對象為不可用狀態(tài)。等待操作對于這三種同步對象,系統(tǒng)提供兩個等待操作:WaitForSingleObjec可在指定的時間內(nèi)等待指定對象為可用狀態(tài);WaitForMultipleObjects可在指定的時間內(nèi)等待多個對象為可用狀態(tài)。臨界區(qū)對象(1)只能用于在同一進程內(nèi)使用的臨界區(qū),同一進程內(nèi)各線程對它的訪問是互斥進行的。把變量說明為CRITICAL_SECTION類型,就可作為臨界區(qū)使用。臨界區(qū)對象(2)臨界區(qū)對象相關API有:InitializeCritic
4、alSection(對臨界區(qū)對象進行初始化)、EnterCriticalSection(等待占用臨界區(qū)的使用權,得到使用權時返回)、TryEnterCriticalSection(非等待方式申請臨界區(qū)的使用權,申請失敗時返回0)、LeaveCriticalSection(釋放臨界區(qū)的使用權)和DeleteCriticalSection(釋放與臨界區(qū)對象相關的所有系統(tǒng)資源)?;ユi變量訪問互鎖變量訪問API相當于硬件指令,用于對整型變量的操作,可避免線程間切換對操作連續(xù)性的影響。API包括:InterlockedExchange(32位數(shù)據(jù)的先讀后寫原子操作)、Interlocked
5、CompareExchange(依據(jù)比較結果進行賦值的原子操作)、InterlockedExchangeAdd(先加后存結果的原子操作)、InterlockedDecrement(先減1后存結果的原子操作)和Interlockedincrement(先加1后存結果的原子操作)。3.7.2Windows2000/XP進程通信機制信號(signal)共享存儲區(qū)(sharedmemory)管道(pipe)郵件槽(mailslot)套接字(socket)信號通信機制(1)信號(signal)是進程與外界的一種低級通信方式,相當于進程的軟中斷。進程可發(fā)送信號,每個進程都有指定的信號處理例程
6、,信號通信是單向和異步的。信號通信機制(2)信號量相關的系統(tǒng)調(diào)用,(1)SetConsoleCtrlHandler定義或取消本進程的信號處理例程中的用戶定義例程。GenerateConsoleCrtlEvent可發(fā)送信號到與本進程共享同一控制臺與控制臺進程組。(2)signal用于設置中斷信號處理例程,raise用于發(fā)送信號。共享存儲區(qū)通信機制(1)用于進程間大數(shù)據(jù)量通信。通信的進程可任意讀寫共享存儲區(qū),也可在共享存儲區(qū)上使用任意數(shù)據(jù)結構。進程使用共享存儲區(qū)時,需要互斥和同步機制來確保數(shù)據(jù)的一致性。采用文件映射(filemapping)機制來實現(xiàn)共享存儲區(qū),用戶進程可把整個文件映
7、射為進程虛擬地址空間的一部分來加以訪問。共享存儲區(qū)通信機制(2)共享存儲區(qū)相關的系統(tǒng)調(diào)用有:CreateFileMapping(為指定文件創(chuàng)建一個文件映射對象)、OpenFileMapping(打開一個命名的文件映射對象)、MapViewOfFile(把文件映射到本進程的地址空間)、FlushViewOfFile(把映射地址空間的內(nèi)容寫到物理文件中)、UnmapViewOfFile(拆除文件與本進程地址空間的映射關系)和CloseHandle(關閉文件映射對象)。管道通信機制(1