操作系統(tǒng)實驗-線程的同步

操作系統(tǒng)實驗-線程的同步

ID:9996261

大小:64.00 KB

頁數(shù):5頁

時間:2018-05-20

操作系統(tǒng)實驗-線程的同步_第1頁
操作系統(tǒng)實驗-線程的同步_第2頁
操作系統(tǒng)實驗-線程的同步_第3頁
操作系統(tǒng)實驗-線程的同步_第4頁
操作系統(tǒng)實驗-線程的同步_第5頁
資源描述:

《操作系統(tǒng)實驗-線程的同步》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、實驗六線程的同步1、實驗?zāi)康模?)進一步掌握Windows系統(tǒng)環(huán)境下線程的創(chuàng)建與撤銷。(2)熟悉Windows系統(tǒng)提供的線程同步API。(3)使用Windows系統(tǒng)提供的線程同步API解決實際問題。2、實驗準(zhǔn)備知識:相關(guān)API函數(shù)介紹①等待對象等待對象(waitfunctions)函數(shù)包括等待一個對象(WaitForSingleObject())和等待多個對象(WaitForMultipleObject())兩個API函數(shù)。1)等待一個對象WaitForSingleObject()用于等待一個對象。它等待的對象可以為以

2、下對象之一?!hangeontification:變化通知?!onsoleinput:控制臺輸入?!vent:事件?!ob:作業(yè)?!utex:互斥信號量?!rocess:進程?!emaphore:計數(shù)信號量?!hread:線程?!aitabletimer:定時器。原型:DWORDWaitForSingleObject(HANDLEhHandle,//對象句柄DWORDdwMilliseconds//等待時間);參數(shù)說明:(1)hHandle:等待對象的對象句柄。該對象句柄必須為SYNCHRONIZE訪

3、問。(2)dwMilliseconds:等待時間,單位為ms。若該值為0,函數(shù)在測試對象的狀態(tài)后立即返回,若為INFINITE,函數(shù)一直等待下去,直到接收到一個信號將其喚醒,如表2-1所示。返回值:如果成功返回,其返回值說明是何種事件導(dǎo)致函數(shù)返回。表2-1函數(shù)描述訪問描述WAITABANDONED等待的對象是一個互斥(Mutex)對象,該互斥對象沒有被擁有它的線程釋放,它被設(shè)置為不能被喚醒WAITOBJECT0指定對象被喚醒WAITTIMEOUT超時用法舉例:StaticHANDLEhHandlel=NULL;DWOR

4、DdRes;dRes=WaitForSingleObject(hHandlel,10);//等待對象的句柄為hHandlel,等待時間為10ms1)等待對個對象WaitForMultiple()bject()在指定時間內(nèi)等待多個對象,它等待的對象與WaitForSingleObject()相同。原型:DWORDWaitForMultipleObjects(DWORDnCount,//句柄數(shù)組中的句柄數(shù)CONSTHANDLE*lpHandles,//指向?qū)ο缶浔鷶?shù)組的指針BOOLfWaitAll,//等待類型DWORDd

5、wMilliseconds//等待時間);參數(shù)說明:(1)nCount:由指針*lpHandles指定的句柄數(shù)組中的句柄數(shù),最大數(shù)是MAXIMUMWAITOBJECTS。(2)*lpHandles:指向?qū)ο缶浔鷶?shù)組的指針。(3)fWaitAll:等待類型。若為TRUE,當(dāng)由lpHandles數(shù)組指定的所有對象被喚醒時函數(shù)返回;若為FALSE,當(dāng)由lpHandles數(shù)組指定的某一個對象被喚醒時函數(shù)返回,且由返回值說明是由于哪個對象引起的函數(shù)返回。(4)dwMilliseconds:等待時間,單位為ms。若該值為0,函數(shù)測

6、試對象的狀態(tài)后立即返回;若為INFINITE,函數(shù)一直等待下去,直到接收到一個信號將其喚醒。返回值:、如果成功返回,其返回值說明是何種事件導(dǎo)致函數(shù)返回。各參數(shù)的描述如表2-2所示。表2-2各參數(shù)描述訪問描述WAITOBJECT0to(WAITOBJECT0+nCount-1)若bWaitAll為TRUE,返回值說明所有被等待的對象均被喚醒;若bWaitAll為FALSE,返回值減去WAITOBJECT0說明lpHandles數(shù)組下標(biāo)指定的對象滿足等待條件。如果調(diào)用時多個對象同時被喚醒,則取多個對象中最小的那個數(shù)組下標(biāo)W

7、AITABANDONED0to(WAITABANDONED0+nCount-1)若bWaitAll為TRUE,返回值說明所有被等待的對象均被喚醒,并且至少有一個對象是沒有約束的互斥對象;若bWaitAll為FALSE,返回值減去WAITABANDONED0說明lpHandles數(shù)組下標(biāo)指定的沒有約束的互斥對象滿足等待條件WAITTIMEOUT超時且參數(shù)bWaitAll指定的條件不能滿足①信號量對象(Semaphore)信號量對象(Semaphore)包括創(chuàng)建信號量(CreateSemaphore())、打開信號量(Op

8、enSemaphore())及增加信號量的值(ReleaseSemaphore())API函數(shù)。1)創(chuàng)建信號量CreateSemaphore())用于創(chuàng)建一個信號量。原型:HANDLECreateSemaphore(LPSECURITYATTRIBUTESlpSemaphoreAttributes,//安全屬性LONGlIniti

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。