版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗二讀者寫者問題實驗報告CKBOOD was revised in the early morning of December 17, 2020.實驗二讀者寫者 問題實驗報告一、實驗?zāi)康腤indows2000/XP 提供了 互斥量(mutex)、信號量(semapore)、事件(event)等三 種同步對象和相應(yīng)的系統(tǒng)調(diào)用,用于線程的互斥與同步。通過對讀者寫者問題的調(diào) 試,了解Windows2000/XP中的同步機制。二、實驗內(nèi)容及實驗步驟利用Windows2000/XP信號量機制,實現(xiàn)讀者寫者問題。在Windows 2000環(huán)境下,創(chuàng)建一個控制臺進程,此進程包含n個線程。用這n 個線程來表
2、示n個讀者或?qū)懻?。每個線程按相應(yīng)測試數(shù)據(jù)文件(后面有介紹)的要 求進行讀寫操作。用信號量機制分別實現(xiàn)讀者優(yōu)先和寫者優(yōu)先的讀者-寫者問題。讀者-寫者問題的讀寫操作限制(包括讀者優(yōu)先和寫者優(yōu)先):寫-寫互斥,即不能有兩個寫者同時進行寫操作。讀-寫互斥,即不能同時有一個線程在讀,而另一個線程在寫。讀-讀允許,即可以有一個或多個讀者在讀。讀者優(yōu)先的附加限制:如果一個讀者申請進行讀操作時已有另一個讀者正在進 行讀操作,則該讀者可直接開始讀操作。寫者優(yōu)先的附加限制:如果一個讀者申請進行讀操作時已有另一寫者在等待訪 問共亨資源,則該讀者必須等到?jīng)]有寫者處于等待狀態(tài)才能開始讀操作。運行結(jié)果顯示要求:要求在每個
3、線程創(chuàng)建、發(fā)出讀寫操作申請、開始讀寫操作 和結(jié)果讀寫操作時分別顯示一行提示信息,以確定所有處理都遵守相應(yīng)的讀寫操作 限制。三、實驗結(jié)果及分析圖選擇界面第一字段為一個正整數(shù),表示線程序號。第二字段表示相應(yīng)線程角色,R表示讀者 是,W表示寫者。第三字段為一個正數(shù),表示讀寫操作的開始時間。線程創(chuàng)建后, 延時相應(yīng)時間(單位為秒)后發(fā)出對共享資源的讀寫申請。第四字段為一個正數(shù), 表示讀寫操作的持續(xù)時間。當(dāng)線程讀寫申請成功后,開始對共亨資源的讀寫操作, 該操作持續(xù)相應(yīng)時間后結(jié)束,并釋放共享資源。下面是一個測試數(shù)據(jù)文件的例 子:1 R 3 52 W 4 53 R 5 24 R 6 5測試結(jié)果如下:圖讀者優(yōu)先
4、運行結(jié)果圖寫者優(yōu)先運行結(jié)果分析如下:將所有的讀者和所有的寫者分別放進兩個等待隊列中,當(dāng)讀允許時就讓讀者隊 列釋放一個或多個讀者,當(dāng)寫允許時,釋放第一個寫者操作。讀者優(yōu)先:如果沒有寫者正在操作,則讀者不需要等待,用一個整型變量readcount記錄 當(dāng)前的讀者數(shù)目,用于確定是否釋放寫者線程,(當(dāng)readcout=0時,說明所有的 讀者都已經(jīng)讀完,釋放一個寫者線程),每個讀者開始讀之前都要修改 readcount,為了互斥的實現(xiàn)對readcount的修改,需要一個互斥對象Mutex來實 現(xiàn)互斥。另外,為了實現(xiàn)寫-寫互斥,需要一個臨界區(qū)對象write,當(dāng)寫者發(fā)出寫的請求 時,必須先得到臨界區(qū)對象的所
5、有權(quán)。通過這種方法,可以實現(xiàn)讀寫互斥,當(dāng) readcount二1時,(即第一個讀者的到來時,),讀者線程也必須申請臨界區(qū)對象 的所有權(quán).當(dāng)讀者擁有臨界區(qū)的所有權(quán),寫者都阻塞在臨界區(qū)對象write上。當(dāng)寫者擁有 臨界區(qū)對象所有權(quán)時,第一個判斷完readcount二二1后,其余的讀者由于等待對readcount的判斷,阻塞在Mutex上!寫者優(yōu)先:寫者優(yōu)先和讀者優(yōu)先有相同之處,不同的地方在:一旦有一個寫者到來時,應(yīng) 該盡快讓寫者進行寫,如果有一個寫者在等待,則新到的讀者操作不能讀操作,為 此添加一個整型變量writecount,記錄寫者的數(shù)目,當(dāng)writ ecount=0時才可以釋 放讀考進行讀操
6、作!為了實現(xiàn)對全局變量writecount的互斥訪問,設(shè)置了一個互斥對象Mutex3o為了實現(xiàn)寫者優(yōu)先,設(shè)置一個臨界區(qū)對象read,當(dāng)有寫者在寫或等待時,讀者 必須阻塞在臨界區(qū)對象read上。讀者除了要一個全局變量readcount實現(xiàn)操作上的互斥外,還需要一個互斥對 象對阻塞在read這一個過程實現(xiàn)互斥,這兩個互斥對象分別為mutexl和 mutex2o附:源代碼如下:ttinclude ttinclude ttinclude ttinclude ttinclude ttinclude ttinclude ttdefine READER Rnz,, m_serial);nz,, m_seri
7、al);Sleep(m_persist);nz,, m_serial);n, m_serial);n,z, m_serial);Sleep(m_persist);n,z, m_serial);erial;inFilethread_infon_thread entity;inFilethread_infon_thread delay;inFilethread infon thread+persist;for (int i=0;iCreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) (RP_ReaderThread),&thread_info _i, 0,
8、&thread_ID); n);n,z, m_serial);wait_for_mutexl二 WaitForSingleOb ject (h_Mutexl, -1);n,z, m_serial);Sleep(m_persist);n,z, m_serial);n, m_serial);n,z, mserial);Sleep(m_persist);nfy m_serial);erial;inFilethread_infon_thread entity;inFilethread_infon_thread delay;inFilethread_infon_thread+ persist;();fo
9、r (int 1=0;i (int)(n_thread);i+)if (thread_infoi. entity二二READERthread_infoi. entity二二R)n);/ /主函數(shù)int main(int argc, char* argvLJ) char ch;while (true)/打印提示信息printf (1:Reader Prioritynz,):printf (“2:Writer PriorityXn);printf (3:Exit Priorityn);printf (Enter your choice (1,2 or 3): “);/如果輸入信息不正確,繼續(xù)輸入doch (char) _getch (); while (ch !二 T &ch !二 2 & ch !二 3);systemCcls);/選擇3,返回辻(ch二二3)retuirn 0;
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Trilysine-TFA-生命科學(xué)試劑-MCE-4187
- KIF18A-IN-15-生命科學(xué)試劑-MCE-5317
- 4-4-Dimethoxyoctafluorobiphenyl-生命科學(xué)試劑-MCE-5198
- 1-3-Dinervonoyl-glycerol-生命科學(xué)試劑-MCE-1243
- 2025年度特色民宿體驗住宿協(xié)議
- 二零二五年度消防設(shè)備定制設(shè)計與銷售合同
- 二零二五年度農(nóng)產(chǎn)品線上線下一體化購銷合同標(biāo)準
- 施工現(xiàn)場施工防傳染病傳播制度
- 個人兼職用工合同模板
- 鄉(xiāng)村別墅租賃合同樣本
- 2025年上半年山東氣象局應(yīng)屆高校畢業(yè)生招考易考易錯模擬試題(共500題)試卷后附參考答案
- 人教版2024-2025學(xué)年八年級上學(xué)期數(shù)學(xué)期末壓軸題練習(xí)
- 【人教版化學(xué)】必修1 知識點默寫小紙條(答案背誦版)
- 江蘇省無錫市2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)試題(原卷版)
- 全國第三屆職業(yè)技能大賽(無人機駕駛(植保)項目)選拔賽理論考試題庫(含答案)
- 成長感恩責(zé)任高中主題班會-課件
- 建設(shè)項目全過程工程咨詢服務(wù)指引(咨詢企業(yè)版)(征求意見稿)
- 分手的協(xié)議書模板(5篇)
- 2020年度安徽省中考數(shù)學(xué)科目試卷
- 2023年山東藥品食品職業(yè)學(xué)院單招綜合素質(zhì)考試筆試題庫及答案解析
評論
0/150
提交評論