windows系統(tǒng)的多線程同步 實驗報告_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗報告課程計算機(jī)操作系統(tǒng)實驗名稱windows系統(tǒng)的多線程同步專業(yè)班級姓名學(xué)號同組人姓名同組人學(xué)號實驗日期教師審批簽字二零零年月日信號量(CSemaphe)A、使用CCriticalSection類當(dāng)多個線程訪問一個獨占性共享資源時可以使用“臨界區(qū)”對象。任一時刻只有一個線程可以擁有臨界區(qū)對象,擁有臨界區(qū)的線程可以訪問被保護(hù)起來的資源或代碼段,其他希望進(jìn)入臨界區(qū)的線程將被掛起等待,直到擁有臨界區(qū)的線程放棄臨界區(qū)時為止,這樣就保證了不會

2、在同一時刻出現(xiàn)多個線程訪問共享資源。CCriticalSection類的用法非常簡單,步驟如下:定義CCriticalSection類的一個全局對象(以使各個線程均能訪問),如CCriticalSectioncritical_section;在訪問需要保護(hù)的資源或代碼之前,調(diào)用CCriticalSection類的成員Lock()獲得臨界區(qū)對象:critical_section.Lock()在線程中調(diào)用該函數(shù)來使線程獲得它所請求的臨界區(qū)。

3、如果此時沒有其它線程占有臨界區(qū)對象,則調(diào)用Lock()的線程獲得臨界區(qū);否則,線程將被掛起,并放入到一個系統(tǒng)隊列中等待,直到當(dāng)前擁有臨界區(qū)的線程釋放了臨界區(qū)時為止。訪問臨界區(qū)完畢后,使用CCriticalSection的成員函數(shù)Unlock()來釋放臨界區(qū):critical_section.Unlock()再通俗一點講,就是線程A執(zhí)行到critical_section.Lock()語句時,如果其它線程(B)正在執(zhí)行critical_se

4、ction.Lock()語句后且critical_section.Unlock()語句前的語句時,線程A就會等待,直到線程B執(zhí)行完critical_section.Unlock()語句,線程A才會繼續(xù)執(zhí)行。B、使用CEvent類CEvent類提供了對事件的支持。事件是一個允許一個線程在某種情況發(fā)生時,喚醒另外一個線程的同步對象。例如在某些網(wǎng)絡(luò)應(yīng)用程序中,一個線程(記為A)負(fù)責(zé)監(jiān)聽通訊端口,另外一個線程(記為B)負(fù)責(zé)更新用戶數(shù)據(jù)。通過使用

5、CEvent類,線程A可以通知線程B何時更新用戶數(shù)據(jù)。每一個CEvent對象可以有兩種狀態(tài):有信號狀態(tài)和無信號狀態(tài)。線程監(jiān)視位于其中的CEvent類對象的狀態(tài),并在相應(yīng)的時候采取相應(yīng)的操作。在MFC中,CEvent類對象有兩種類型:人工事件和自動事件。一個自動CEvent對象在被至少一個線程釋放后會自動返回到無信號狀態(tài);而人工事件對象獲得信號后,釋放可利用線程,但直到調(diào)用成員函數(shù)ReSetEvent()才將其設(shè)置為無信號狀態(tài)。在創(chuàng)建CE

6、vent類的對象時,默認(rèn)創(chuàng)建的是自動事件。CEvent類的各成員函數(shù)的原型和參數(shù)說明如下:1、CEvent(BOOLbInitiallyOwn=FALSEBOOLbManualReset=FALSELPCTSTRlpszName=NULLLPSECURITY_ATTRIBUTESlpsaAttribute=NULL)bInitiallyOwn:指定事件對象初始化狀態(tài),TRUE為有信號,F(xiàn)ALSE為無信號;bManualReset:指定要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論