版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Windows CE下多線程多路播放的設(shè)計(jì).pdf
- 24李后浪實(shí)驗(yàn)五 多線程
- 2嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)二多線程
- 2嵌入式系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)二多線程
- linux多線程編程
- 面向?qū)ο笈c多線程綜合實(shí)驗(yàn)-異常處理
- 操作系統(tǒng)課程設(shè)計(jì)--- 多線程管理與線程通信
- 同步輻射高壓edxd實(shí)驗(yàn)報(bào)告
- 多線程的內(nèi)存調(diào)度.pdf
- java多線程編程詳解
- vxWorks操作系統(tǒng)的多線程實(shí)現(xiàn)研究.pdf
- 不錯(cuò)的delphi多線程編程教程
- 基于多線程事件同步技術(shù)的鈣離子濃度檢測(cè)軟件的設(shè)計(jì)
- 基于多線程的電信服務(wù)開(kāi)通系統(tǒng).pdf
- linux操作系統(tǒng)下的多線程編程詳細(xì)解析
- 基于消息傳遞系統(tǒng)的多線程并發(fā)對(duì)象模型.pdf
- 重慶大學(xué)操作系統(tǒng)實(shí)驗(yàn)三(線程同步)
- 重慶大學(xué)操作系統(tǒng)實(shí)驗(yàn)三(線程同步)
- 基于多線程的導(dǎo)航雷達(dá)終端軟件系統(tǒng)實(shí)現(xiàn).pdf
- 同時(shí)多線程處理器前端系統(tǒng)的研究.pdf
評(píng)論
0/150
提交評(píng)論