操作系統(tǒng)課程設(shè)計報告網(wǎng)絡(luò)教學(xué)系統(tǒng)_第1頁
操作系統(tǒng)課程設(shè)計報告網(wǎng)絡(luò)教學(xué)系統(tǒng)_第2頁
操作系統(tǒng)課程設(shè)計報告網(wǎng)絡(luò)教學(xué)系統(tǒng)_第3頁
操作系統(tǒng)課程設(shè)計報告網(wǎng)絡(luò)教學(xué)系統(tǒng)_第4頁
操作系統(tǒng)課程設(shè)計報告網(wǎng)絡(luò)教學(xué)系統(tǒng)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計報告課程名稱 操作系統(tǒng)課程設(shè)計 設(shè)計題目 網(wǎng)絡(luò)教學(xué)系統(tǒng) 專業(yè)班級 姓 名 學(xué) 號 指導(dǎo)教師 起止時間 2010年12月5日-24日 成 績 評 定考核內(nèi)容設(shè)計表現(xiàn)設(shè) 計報 告答辯綜合評定成 績電氣與信息學(xué)院課程設(shè)計考核和成績評定辦法1 課程設(shè)計的考核由指導(dǎo)教師根據(jù)設(shè)計表現(xiàn)、設(shè)計報告、設(shè)計成果、答辯等幾個方面,給出各項權(quán)重,綜合評定。該設(shè)計考核教研室主任審核,主管院長審批備案。2 成績評定采用五級分制,即優(yōu)、良、中、及格、不及格。3 參加本次設(shè)計時間不足三分之二或曠課四天以上者,不得參加本次考核,按不及格處理。4 課程設(shè)計結(jié)束一周內(nèi),指導(dǎo)教師提交成績和設(shè)計總結(jié)。5 設(shè)計過程考核和成績在教

2、師手冊中有記載。課程設(shè)計報告內(nèi)容 課程設(shè)計報告內(nèi)容、格式各專業(yè)根據(jù)專業(yè)不同統(tǒng)一規(guī)范,經(jīng)教研室主任審核、主管院長審批備案。注: 1. 課程設(shè)計任務(wù)書和指導(dǎo)書在課程設(shè)計前發(fā)給學(xué)生,設(shè)計任務(wù)書放置在設(shè)計報告封面后和正文目錄前。 2. 為了節(jié)省紙張,保護環(huán)境,便于保管實習(xí)報告,統(tǒng)一采用a4紙,實習(xí)報告建議雙面打印(正文采用宋體五號字)或手寫。09/10學(xué)年第2學(xué)期操作系統(tǒng)課程設(shè)計任務(wù)書指導(dǎo)教師:班級:一、課程設(shè)計的目的與要求本課程設(shè)計的目的是使課程設(shè)計的目的是使學(xué)生深刻理解操作系統(tǒng)的基本原理和方法。能夠利用所學(xué)程序設(shè)計的知識和操作系統(tǒng)的原理,解決具體問題,提高學(xué)生程序設(shè)計的綜合能力,為學(xué)生后續(xù)課程及畢

3、業(yè)設(shè)計打下良好的基礎(chǔ)。要求學(xué)生從給定的十個題目中選擇至少四個題目進行設(shè)計,并給出設(shè)計思想、設(shè)計規(guī)范、算法描述、源程序以及運行示例。二、課程設(shè)計的內(nèi)容與安排1設(shè)計題目(范圍) 設(shè)計一 進程調(diào)度 設(shè)計目的:進程管理是操作系統(tǒng)中的重要功能,用來創(chuàng)建進程、撤消進程、實現(xiàn)進程狀態(tài)轉(zhuǎn)換,它提供了在可運行的進程之間復(fù)用cpu的方法。在進程管理中,進程調(diào)度是核心,因為在采用多道程序設(shè)計的系統(tǒng)中,往往有若干個進程同時處于就緒狀態(tài),當(dāng)就緒進程個數(shù)大于處理器數(shù)目時,就必須依照某種策略決定哪些進程優(yōu)先占用處理器。本實驗?zāi)M在單處理器情況下的進程調(diào)度,目的是加深對進程調(diào)度工作的理解,掌握不同調(diào)度算法的優(yōu)缺點。設(shè)計題目:

4、第一題:設(shè)計一個按先來先服務(wù)算法實現(xiàn)處理器調(diào)度的程序。第二題:設(shè)計一個按時間片輪轉(zhuǎn)法實現(xiàn)處理器調(diào)度的程序。第三題:設(shè)計一個按優(yōu)先數(shù)調(diào)度算法實現(xiàn)處理器調(diào)度的程序。第四題:設(shè)計一個按多級隊列調(diào)度算法實現(xiàn)處理器調(diào)度的程序。 設(shè)計二進程同步 設(shè)計目的: 理解臨界區(qū)和進程互斥的概念,掌握用信號量和pv操作實現(xiàn)進程互斥的方法。設(shè)計題目:在windows或者linux環(huán)境下編寫一個控制臺應(yīng)用程序,該程序運行時能創(chuàng)建n個線程,其中既有讀者線程又有寫者線程,它們按照事先設(shè)計好的測試數(shù)據(jù)進行讀寫操作。用信號量和pv操作實現(xiàn)讀者/寫者問題。 設(shè)計三 死鎖 設(shè)計目的: 死鎖是進程并發(fā)執(zhí)行過程中可能出現(xiàn)的現(xiàn)象,哲學(xué)家就

5、餐問題是描述死鎖的經(jīng)典例子。為了防止死鎖,可以采用資源預(yù)分配法或者資源按序分配法。資源預(yù)分配法是指進程在運行前一次性地向系統(tǒng)申請它所需要的全部資源,如果系統(tǒng)當(dāng)前不能夠滿足進程的全部資源請求,則不分配資源, 此進程暫不投入運行,如果系統(tǒng)當(dāng)前能夠滿足進程的全部資源請求, 則一次性地將所申請的資源全部分配給申請進程。資源按序分配法是指事先將所有資源類全排序, 即賦予每一個資源類一個唯一的整數(shù),規(guī)定進程必需按照資源編號由小到大的次序申請資源。設(shè)計題目:模擬有五個哲學(xué)家的哲學(xué)家進餐問題。 設(shè)計四 動態(tài)異長分區(qū)的存儲分配與回收算法 設(shè)計目的: 存儲器是計算機系統(tǒng)中的關(guān)鍵資源,存儲管理一直是操作系統(tǒng)的最主要

6、功能之一。存儲管理既包括內(nèi)存資源管理,也包括用 于實現(xiàn)分級存儲體系的外存資源的管理。通常,內(nèi)存與外存可采用相同或相似的管理技術(shù),如內(nèi)存采用段式存儲管理,則外存也采用段式存儲管理。 通過本設(shè)計 理解存儲管理的功能,掌握動態(tài)異長分區(qū)的存儲分配與回收算法。設(shè)計題目:模擬動態(tài)異長分區(qū)的分配算法、回收算法和碎片整理算法。 設(shè)計五 虛擬設(shè)備 設(shè)計目的: 在網(wǎng)絡(luò)環(huán)境下,連在網(wǎng)絡(luò)服務(wù)器上的打印機要為多個終端服務(wù),每個終端上的用戶都可以通過客戶端程序向服務(wù)器發(fā)送打印請求,服務(wù)器端的打印請求接收程序接收來自客戶端的打印請求,并將該請求存放到磁盤上的打印請求隊列中,由服務(wù)器端的假脫機打印程序在cpu空閑時從打印請求

7、隊列中取出請求信息,并將文件輸出到打印機中。這種工作方式不是將文件直接輸出到打印機,而是先將待打印的文件緩存到磁盤上,然后立即返回用戶程序,從而縮短了用戶響應(yīng)時間,為用戶提供了虛擬的快速打印機.通過本設(shè)計理解虛擬設(shè)備的工作原理,理解守護程序的概念。設(shè)計題目:利用多線程技術(shù)編寫假脫機打印程序,并設(shè)計測試數(shù)據(jù)以驗證程序的正確性。 設(shè)計六 管道與進程通信 設(shè)計目的: 進程通信是指兩個或者多個進程之間交換數(shù)據(jù),管道允許進程之間按先進先出的方式傳送數(shù)據(jù)。有兩種類型的管道:有名管道和無名管道。有名管道可以使任意兩個進程之間進行通信,無名管道只能用在父子進程之間。 通過本設(shè)計理解進程通信原理,掌握用管道實現(xiàn)

8、進程間通信的方法。設(shè)計題目: 在linux環(huán)境中利用有名管道實現(xiàn)兩個進程之間的通信。 設(shè)計七 嵌入式操作系統(tǒng)下的并發(fā)程序設(shè)計 設(shè)計目的:了解嵌入式操作系統(tǒng)的特點,掌握在嵌入式操作系統(tǒng)下進行并發(fā)程序設(shè)計的方法。設(shè)計題目: 剖析源碼公開的實時嵌入式操作系統(tǒng)內(nèi)核uc/os-ii;在uc/os-ii上開發(fā)一個“并發(fā)程序設(shè)計動態(tài)演示系統(tǒng)”,此系統(tǒng)以可視化的方式演示多個任務(wù)在不同的優(yōu)先級、不同的延時時間、不同的運行方式下的不同運行狀況。教師可以根據(jù)實際情況確定學(xué)生獨立完成任務(wù)個數(shù),題目可參考本大綱中提供的,也可由學(xué)生自定,自定的題目須經(jīng)指導(dǎo)教師批準(zhǔn)。2主要技術(shù)指標(biāo)和要求能按題目要求調(diào)試出正確的運行結(jié)果。3

9、方案選擇及工作原理選擇不同的設(shè)計題目,給出設(shè)計方案,正確運行。4設(shè)計成果的要求課程設(shè)計結(jié)束后,要求每個學(xué)生上交一份課程設(shè)計報告。報告要求包括課程設(shè)計任務(wù),設(shè)計完成的界面圖、源程序清單及課程設(shè)計總結(jié)等部分。三、進程安排時間,2010年3月1日-2010年3月5日。上機時間: 周四:7:50-12:00,2:00-16:30 周五:7:50-12:00 周六7:50-12:00序號完成內(nèi)容時間1設(shè)計準(zhǔn)備1天2按任務(wù)要求設(shè)計、調(diào)試程序,完成報告3天3總結(jié)和答辯1天4合計5天四、基本要求1明確課程設(shè)計任務(wù),提高課程設(shè)計認(rèn)識,嚴(yán)格服從教師安排,不遲到,不早退,不曠課,按時上機;上機時認(rèn)真做設(shè)計,不得做聊

10、天、上網(wǎng)、玩游戲等與課程設(shè)計無關(guān)的事情,一經(jīng)發(fā)現(xiàn),經(jīng)警告不改者,取消上機資格并把其課程設(shè)計成績作零分計。2認(rèn)真獨立完成設(shè)計內(nèi)容,上機前準(zhǔn)備程序,做好資料搜集,能夠上網(wǎng)查詢所需資料;除了上機,其余時間為查找資料和編寫程序,要充分利用好時間。3利用面向?qū)ο蟮姆椒ㄒ约皏c+或者java的編程思想來完成系統(tǒng)的設(shè)計,編寫程序,調(diào)試各模塊。4請各位同學(xué)攜帶u盤等存儲設(shè)備,每次編寫完程序作備份,以防源程序丟失。 五、課程設(shè)計的成果要求與成績評定課程設(shè)計結(jié)束后,要求每個學(xué)生上交一份格式規(guī)范內(nèi)容完整的課程設(shè)計報告。并能夠上機演示程序運行結(jié)果。根據(jù)參加設(shè)計平時出勤表現(xiàn)情況、答辯驗收情況、設(shè)計報告三方面評定給出最后

11、的總成績。權(quán)重比例見下表:成績評定項 目權(quán)重1、設(shè)計過程中出勤、能力、水平、態(tài)度等方面0.42、設(shè)計報告書寫及圖紙規(guī)范程度0.23、答辯0.4 一、進程調(diào)度1、設(shè)計目的: 進程管理是操作系統(tǒng)中的重要功能,用來創(chuàng)建進程、撤消進程、實現(xiàn)進程狀態(tài)轉(zhuǎn)換,它提供了在可運行的進程之間復(fù)用cpu的方法。在進程管理中,進程調(diào)度是核心,因為在采用多道程序設(shè)計的系統(tǒng)中,往往有若干個進程同時處于就緒狀態(tài),當(dāng)就緒進程個數(shù)大于處理器數(shù)目時,就必須依照某種策略決定哪些進程優(yōu)先占用處理器。本實驗?zāi)M在單處理器情況下的進程調(diào)度,目的是加深對進程調(diào)度工作的理解,掌握不同調(diào)度算法的優(yōu)缺點。2、設(shè)計題目設(shè)計一個按多級隊列調(diào)度算法實

12、現(xiàn)處理器調(diào)度的程序。3、 設(shè)計思想 設(shè)置多個就緒隊列,分別賦予不同的優(yōu)先級,如逐級降低,隊列1的優(yōu)先級最高。每個隊列執(zhí)行時間片的長度也不同,規(guī)定優(yōu)先級越低則時間片越長,如逐級加倍。新進程進入內(nèi)存后,先投入隊列1的末尾,按fcfs算法調(diào)度;若按隊列1一個時間片未能執(zhí)行完,則降低投入到隊列2的末尾,同樣按fcfs算法調(diào)度;如此下去,降低到最后的隊列,則按“時間片輪轉(zhuǎn)”算法調(diào)度直到完成。僅當(dāng)較高優(yōu)先級的隊列為空,才調(diào)度較低優(yōu)先級的隊列中的進程執(zhí)行。如果進程執(zhí)行時有新進程進入較高優(yōu)先級的隊列,則搶先執(zhí)行新進程,并把被搶先的進程投入原隊列的末尾。源代碼 #include stdio.h#include

13、conio.h#include stdlib.h#include malloc.h#include time.h#include windows.h#define null 0#define n 4int mn=18;struct cpu /就緒隊列 int time; /時間片數(shù)量 struct pss *head; struct pss *tail; ; struct pss /進程 char name5; int pro_time; /執(zhí)行時間 int l_time; / 剩余時間 struct pss *next; ;void gotoxy(int x, int y) coord c;

14、 c.x = x - 1; c.y = y - 1; setconsolecursorposition (getstdhandle(std_output_handle), c); void initial(struct cpu cpu_quene) /初始化就緒隊列,時間片分別為2 4 8 16 int i,t=2; for(i=0;iname); gotoxy(25,8); printf(請輸入處理進程需要的時間:); scanf(%d,&p-pro_time); p-l_time=p-pro_time; /剩余時間初始化,初始值為需要時間的值 p-next=null; if(cpu_que

15、ne0.head=null) cpu_quene0.head=p; cpu_quene0.tail=p; else q=cpu_quene0.tail; cpu_quene0.tail=p; q-next=p;void osdelay(int n)int a,i,m; m=500*n; a=clock(); for(i=0;i+) if(clock()-a=m) break; void print(struct cpu cpu_quene) struct pss *p; gotoxy(23,5); p=cpu_quene0.head; printf( ); gotoxy(23,5); whil

16、e(p!=null) printf(%s %d ,p-name,p-l_time); p=p-next; gotoxy(23,7); p=cpu_quene1.head; printf( ); gotoxy(23,7); while(p!=null) printf(%s %d ,p-name,p-l_time); p=p-next; gotoxy(23,9); p=cpu_quene2.head; printf( ); gotoxy(23,9); while(p!=null) printf(%s %d ,p-name,p-l_time); p=p-next; gotoxy(23,11); p=

17、cpu_quene3.head; printf( ); gotoxy(23,11); while(p!=null) printf(%s %d ,p-name,p-l_time); p=p-next;void nprint(struct pss *p)gotoxy(27,15); printf(%s %d ,p-name,p-l_time);void process(struct cpu cpu_quenen) /進程執(zhí)行函數(shù) struct pss *p,*q,*p1; int i=0,j,a,b; int flag1=1; while(il_time!=0) osdelay(1); p-l_t

18、ime=p-l_time-1; /剩余時間-1? gotoxy(27,15); printf(進程%s處理完畢,離開隊列!,p-name); cpu_quenei.head=p-next; print(cpu_quene); gotoxy(mn,18); printf(%s %d,p-name,p-pro_time); /輸出執(zhí)行結(jié)果 mn=mn+9; free(p); /釋放內(nèi)存 p=cpu_quenei.head; gotoxy(10,2); printf( ); gotoxy(10,2); printf(所有進程處理完畢!); else gotoxy(10,2); printf( );

19、gotoxy(10,2); printf(所有進程處理完畢!); flag1=0; break; case 2:p=cpu_quenei.head; for(;cpu_quenei.head!=null;) cpu_quenei.head=p-next; p-next=null; gotoxy(27,15); printf( ); nprint(p); b=cpu_quenei.time; while(p-l_time!=0&b!=0) osdelay(1); p-l_time=p-l_time-1; b-; /時間片減1 if(p-l_time=0) /剩余時間為零 gotoxy(27,15

20、); printf(進程%s處理完畢,離開隊列!,p-name); gotoxy(mn,18); printf(%s %d,p-name,p-pro_time); /輸出完成進程 mn=mn+9; free(p); else j=i+1; if(cpu_quenej.head!=null) /p=cpu_quenei.head q=cpu_quenej.tail; cpu_quenej.tail=p; q-next=p; else cpu_quenej.head=p; cpu_quenej.tail=p; p-next=null; print(cpu_quene); p=cpu_quenei.

21、head; cpu_quenei.tail=null; i+; if(i=3) a=1; else a=2; break; void main() int i, j,flag=1,t=2; char a; struct pss *p1; struct cpu cpu_quene4; initial(cpu_quene); /創(chuàng)建就緒隊列 for(;flag=1;) gotoxy(20,4); printf(); for(j=5;jname,p1-pro_time); p1=p1-next; for(j=4;j13;j+) gotoxy(8,j); printf( ); gotoxy(8,4);

22、 printf(); gotoxy(10,5); printf(一級隊列 2:); gotoxy(10,7); printf(二級隊列 4:); gotoxy(10,9); printf(三級隊列 8:); gotoxy(10,11); printf(四級隊列 16:); gotoxy(8,13); printf(); print(cpu_quene); gotoxy(10,15); printf(正在處理的進程:); process(cpu_quene); gotoxy(10,20);printf(n*); 運行結(jié)果: 重點和難點及其解決方法 多級反饋隊列算法的實現(xiàn)。剛開始對多級反饋隊列算法

23、不太了解,是fcfs 、rr、hpf三者結(jié)合而形成的一種進程調(diào)度算法。 二、進程同步 1、設(shè)計目的: 理解臨界區(qū)和進程互斥的概念,掌握用信號量和pv操作實現(xiàn)進程互斥的方法。2、設(shè)計題目: 在windows或者linux環(huán)境下編寫一個控制臺應(yīng)用程序,該程序運行時能創(chuàng)建n個線程,其中既有讀者線程又有寫者線程,它們按照事先設(shè)計好的測試數(shù)據(jù)進行讀寫操作。用信號量和pv操作實現(xiàn)讀者/寫者問題。 3、 設(shè)計思路 將所有的讀者和所有的寫者分別放進兩個等待隊列中,當(dāng)讀允許時就讓讀者隊列釋放一個或多個讀者,當(dāng)寫允許時,釋放第一個寫者操作。 讀者優(yōu)先: 如果沒有寫者正在操作,則讀者不需要等待,用一個整型變量rea

24、dcount記錄當(dāng)前的讀者數(shù)目,用于確定是否釋放寫者線程,(當(dāng)readcout=0 時,說明所有的讀者都已經(jīng)讀完,釋放一個寫者線程),每個讀者開始讀之前都要修改readcount,為了互斥的實現(xiàn)對readcount 的修改,需要一個互斥對象mutex來實現(xiàn)互斥。 另外,為了實現(xiàn)寫-寫互斥,需要一個臨界區(qū)對象 write,當(dāng)寫者發(fā)出寫的請求時,必須先得到臨界區(qū)對象的所有權(quán)。通過這種方法,可以實現(xiàn)讀寫互斥,當(dāng)readcount=1 時,(即第一個讀者的到來時,),讀者線程也必須申請臨界區(qū)對象的所有權(quán). 當(dāng)讀者擁有臨界區(qū)的所有權(quán),寫者都阻塞在臨界區(qū)對象write上。當(dāng)寫者擁有臨界區(qū)對象所有權(quán)時,第一

25、個判斷完readcount=1 后,其余的讀者由于等待對readcount的判斷,阻塞在mutex上! 寫者優(yōu)先: 寫者優(yōu)先和讀者優(yōu)先有相同之處,不同的地方在:一旦有一個寫者到來時,應(yīng)該盡快讓寫者進行寫,如果有一個寫者在等待,則新到的讀者操作不能讀操作,為此添加一個整型變量writecount,記錄寫者的數(shù)目,當(dāng)writecount=0時才可以釋放讀者進行讀操作! 為了實現(xiàn)對全局變量writecount的互斥訪問,設(shè)置了一個互斥對象mutex3。 為了實現(xiàn)寫者優(yōu)先,設(shè)置一個臨界區(qū)對象read,當(dāng)有寫者在寫或等待時,讀者必須阻塞在臨界區(qū)對象read上。 讀者除了要一個全局變量readcount實

26、現(xiàn)操作上的互斥外,還需要一個互斥對象對阻塞在read這一個過程實現(xiàn)互斥,這兩個互斥對象分別為mutex1和mutex2。 程序結(jié)構(gòu)4、 源代碼 #include #include #include fstream.h int readcount=0; /int writecount=0; /critical_section rp_write; /critical_section cs_write;critical_section cs_read;struct threadinfo /int threadhao; /char threadclass; /double threadstarttim

27、e; /double threadruntime; /;void readerfun(char* file);/void r_readerthread(void *p);/void r_writerthread(void *p);/void writerfun(char* file); /void w_readerthread(void *p);/void w_writerthread(void *p);/int main()/char select;while (true)cout*-*nendl;cout 1:endl; cout 2:endl;cout 3:endl;coutn*endl

28、;cout:select;if(select!=1 & select!=2 & select!=3)coutendl;while (select!=1 & select!=2 & select!=3);system(cls);if (select=3)return 0;/else if (select=1)/readerfun(peizhi.txt); else if(select=2)/ writerfun(peizhi.txt);coutn? 1. 2.select;if(select!=1 & select!=2 )coutendl;while (select!=1 & select!=

29、2);if(select=2)return 0;/system(cls);return 0;/void readerfun(char* file)dword n_thread=0; /0dword thread_id; /iddword wait_for_all; /handle h_mutex;/(h_mutex)h_mutex=createmutex(null,false,mutex_for_readcount);handle h_thread64;/64threadinfo thread_info64;readcount=0; initializecriticalsection(&rp_

30、write); /ifstream infile;infile.open(file); cout:nthread_infon_thread.threadhaothread_infon_thread.threadclass thread_infon_thread.threadstarttimethread_infon_thread.threadruntime;if (-1 = infile.get()break;n_thread+;/for (int i=0;i(int)(n_thread);i+)if (thread_infoi.threadclass=r)/h_threadi=createt

31、hread(null,0,(lpthread_start_routine)(r_readerthread),&thread_infoi,0,&thread_id);else/h_threadi=createthread(null,0,(lpthread_start_routine)(r_writerthread),&thread_infoi,0,&thread_id);wait_for_all=waitformultipleobjects(n_thread,h_thread,true,-1);cout.threadhao;m_delay=(dword)(threadinfo *)(p)-thr

32、eadstarttime*100);m_threadruntime=(dword)(threadinfo *)(p)-threadruntime*100);sleep(m_delay); /cout m_threadhao .endl;/wait_for_mutex=waitforsingleobject(h_mutex,-1); /readcount /readcount+; /if (readcount=1)entercriticalsection(&rp_write);/ releasemutex(h_mutex);/cout m_threadhao .endl;sleep(m_thre

33、adruntime);/cout m_threadhao .threadhao;m_delay=(dword)(threadinfo *)(p)-threadstarttime*100);m_threadruntime=(dword)(threadinfo *)(p)-threadruntime*100);sleep(m_delay); /cout m_threadhao .endl;entercriticalsection(&rp_write);/cout m_threadhao .endl;sleep(m_threadruntime);/cout m_threadhao .endl;lea

34、vecriticalsection(&rp_write);/void writerfun(char* file)dword n_thread=0; /dword thread_id; /iddword wait_for_all; /handle h_mutex1, h_mutex2, h_mutex3;h_mutex1 = createmutex(null, false, mutex_for_writecount);h_mutex2 = createmutex(null, false, mutex_for_readcount);h_mutex3 = createmutex(null, fals

35、e, mutex_for_read);/handle h_thread64;threadinfo thread_info64;readcount=0; /readcountinitializecriticalsection(&cs_write); /initializecriticalsection(&cs_read);ifstream infile;infile.open(file); /cout:nthread_infon_thread.threadhaothread_infon_thread.threadclassthread_infon_thread.threadstarttimethread_infon_thread.t

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論