windows系統(tǒng)的多線程同步 實(shí)驗(yàn)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論