版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)報(bào)告課程計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)名稱windows系統(tǒng)的多線程同步專業(yè)班級姓名學(xué)號(hào)同組人姓名同組人學(xué)號(hào)實(shí)驗(yàn)日期教師審批簽字二零零年月日信號(hào)量(CSemaphe)A、使用CCriticalSection類當(dāng)多個(gè)線程訪問一個(gè)獨(dú)占性共享資源時(shí)可以使用“臨界區(qū)”對象。任一時(shí)刻只有一個(gè)線程可以擁有臨界區(qū)對象,擁有臨界區(qū)的線程可以訪問被保護(hù)起來的資源或代碼段,其他希望進(jìn)入臨界區(qū)的線程將被掛起等待,直到擁有臨界區(qū)的線程放棄臨界區(qū)時(shí)為止,這樣就保證了不會(huì)
2、在同一時(shí)刻出現(xiàn)多個(gè)線程訪問共享資源。CCriticalSection類的用法非常簡單,步驟如下:定義CCriticalSection類的一個(gè)全局對象(以使各個(gè)線程均能訪問),如CCriticalSectioncritical_section;在訪問需要保護(hù)的資源或代碼之前,調(diào)用CCriticalSection類的成員Lock()獲得臨界區(qū)對象:critical_section.Lock()在線程中調(diào)用該函數(shù)來使線程獲得它所請求的臨界區(qū)。
3、如果此時(shí)沒有其它線程占有臨界區(qū)對象,則調(diào)用Lock()的線程獲得臨界區(qū);否則,線程將被掛起,并放入到一個(gè)系統(tǒng)隊(duì)列中等待,直到當(dāng)前擁有臨界區(qū)的線程釋放了臨界區(qū)時(shí)為止。訪問臨界區(qū)完畢后,使用CCriticalSection的成員函數(shù)Unlock()來釋放臨界區(qū):critical_section.Unlock()再通俗一點(diǎn)講,就是線程A執(zhí)行到critical_section.Lock()語句時(shí),如果其它線程(B)正在執(zhí)行critical_se
4、ction.Lock()語句后且critical_section.Unlock()語句前的語句時(shí),線程A就會(huì)等待,直到線程B執(zhí)行完critical_section.Unlock()語句,線程A才會(huì)繼續(xù)執(zhí)行。B、使用CEvent類CEvent類提供了對事件的支持。事件是一個(gè)允許一個(gè)線程在某種情況發(fā)生時(shí),喚醒另外一個(gè)線程的同步對象。例如在某些網(wǎng)絡(luò)應(yīng)用程序中,一個(gè)線程(記為A)負(fù)責(zé)監(jiān)聽通訊端口,另外一個(gè)線程(記為B)負(fù)責(zé)更新用戶數(shù)據(jù)。通過使用
5、CEvent類,線程A可以通知線程B何時(shí)更新用戶數(shù)據(jù)。每一個(gè)CEvent對象可以有兩種狀態(tài):有信號(hào)狀態(tài)和無信號(hào)狀態(tài)。線程監(jiān)視位于其中的CEvent類對象的狀態(tài),并在相應(yīng)的時(shí)候采取相應(yīng)的操作。在MFC中,CEvent類對象有兩種類型:人工事件和自動(dòng)事件。一個(gè)自動(dòng)CEvent對象在被至少一個(gè)線程釋放后會(huì)自動(dòng)返回到無信號(hào)狀態(tài);而人工事件對象獲得信號(hào)后,釋放可利用線程,但直到調(diào)用成員函數(shù)ReSetEvent()才將其設(shè)置為無信號(hào)狀態(tài)。在創(chuàng)建CE
6、vent類的對象時(shí),默認(rèn)創(chuàng)建的是自動(dòng)事件。CEvent類的各成員函數(shù)的原型和參數(shù)說明如下:1、CEvent(BOOLbInitiallyOwn=FALSEBOOLbManualReset=FALSELPCTSTRlpszName=NULLLPSECURITY_ATTRIBUTESlpsaAttribute=NULL)bInitiallyOwn:指定事件對象初始化狀態(tài),TRUE為有信號(hào),F(xiàn)ALSE為無信號(hào);bManualReset:指定要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 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ù)的鈣離子濃度檢測軟件的設(shè)計(jì)
- 基于多線程的電信服務(wù)開通系統(tǒng).pdf
- linux操作系統(tǒng)下的多線程編程詳細(xì)解析
- 基于消息傳遞系統(tǒng)的多線程并發(fā)對象模型.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
評論
0/150
提交評論