第一篇:售票員和汽車司機(jī)的進(jìn)程同步問題
計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)報(bào)告
一、實(shí)驗(yàn)名稱:售票員和汽車司機(jī)的進(jìn)程同步問題
二、實(shí)驗(yàn)內(nèi)容:創(chuàng)建兩個(gè)進(jìn)程模擬售票員和汽車司機(jī)的同步行為。具體內(nèi)容如下:
1.司機(jī)的活動(dòng):啟動(dòng)車輛,正常行車,到站停車。2.售票員活動(dòng):關(guān)車門,售票,開車門。
3.當(dāng)發(fā)車時(shí)間到,售票員關(guān)好車門后,司機(jī)才能啟動(dòng)車輛,售票員才開始售票。當(dāng)?shù)秸緯r(shí),司機(jī)停穩(wěn)車后,售票員才能打開車門,車上乘客先下車,然后站牌乘客上車。
三、問題分析與設(shè)計(jì)
分析:司機(jī)與售票員要協(xié)同工作:一方面只有售票員把門關(guān)好之后司機(jī)才可開車,因此售票員關(guān)好門之后要通知司機(jī)開車,然后售票;另一方面,也只有司機(jī)把車停下之后售票員才能開門讓乘客下車和上車,因此,此時(shí)司機(jī)應(yīng)通知售票員。汽車當(dāng)前正在始發(fā)站停車讓乘客讓乘客上車,因此,必須設(shè)置一定的信號(hào)量來實(shí)現(xiàn)他們之間的同步問題。
設(shè)計(jì):設(shè)置司機(jī)與售票員的信號(hào)量為全局變量,并且客車的人數(shù):現(xiàn)在人數(shù)、下車人數(shù)、上車人數(shù)為全局變量;設(shè)置司機(jī)與售票員的線程。考慮到第一站和最后一站的問題,應(yīng)單獨(dú)處理,故在各自的線程中分情況討論:
具體的思路是下面的圖示。其中S1是司機(jī)的信號(hào)量,S2是售票員的信號(hào)量。
程序的實(shí)現(xiàn)(代碼): #include
int Recent_num=0;//某一時(shí)刻的客車上的人數(shù) int Get_on_num;//上車的人數(shù) int Get_off_num;//下車的人數(shù) int pork=1;//客車到達(dá)路線的站數(shù) HANDLE Semaphore_driver;//Driver的信號(hào)量 HANDLE Semaphore_conductor;//Conductor的信號(hào)量 //產(chǎn)生一定范圍的隨機(jī)數(shù),可避免下面程序的判斷是否超出客車的最大容量問題
int Get_random(int min,int max){ int a;srand((int)time(0));while(1){ a=rand()%(Total_num+1);if(a>=min && a<=max)return a;} } //Driver的線程
DWORD WINAPI Thread_Driver(LPVOID Driver){ while(pork<=Total_num){ if(pork==Total_pork){ WaitForSingleObject(Semaphore_driver,INFINITE);printf(“終點(diǎn)站到了,謝謝乘坐該公交車,祝您愉快!n”);printf(“到達(dá)終點(diǎn)站時(shí)汽車上還有 %d 人。n”,Recent_num);ReleaseSemaphore(Semaphore_conductor,1,NULL);return 0;} else { if(pork==1)printf(“發(fā)車時(shí)間到,現(xiàn)在是第 %d 站n”,pork);else printf(“ %d 站到了n”,pork);if(pork!=1)printf(“司機(jī)已停車。n”);
ReleaseSemaphore(Semaphore_conductor,1,NULL);// 增加信號(hào)量
WaitForSingleObject(Semaphore_driver,INFINITE);printf(“已關(guān)門,汽車開始行使。n”);ReleaseSemaphore(Semaphore_conductor,1,NULL);} Sleep(1000);} return 0;} //Conductor的線程
DWORD WINAPI Thread_Conductor(LPVOID Conductor){ while(1){ if(pork < Total_pork){
WaitForSingleObject(Semaphore_conductor,INFINITE);if(pork==1){
Get_on_num=Get_random(0,Total_num-Recent_num);printf(“ %d 人已經(jīng)從該站上車。n”,Get_on_num);Recent_num+=Get_on_num;} else { printf(“售票員請(qǐng)開門讓乘客上下車!n”);Get_off_num=Get_random(0,Recent_num);printf(“%d人從第 %d 站下車。n”,Get_off_num,pork);Sleep(1000);//避免了時(shí)間的問題帶來的不是隨機(jī)數(shù)的現(xiàn)象
Recent_num-=Get_off_num;Get_on_num=Get_random(0,Total_num-Recent_num);printf(“%d人從該第 %d 站上車。n”,Get_on_num,pork);Recent_num+=Get_on_num;} printf(“此時(shí)車上共有:%d人n”,Recent_num);printf(“上車或下車完畢,售票員請(qǐng)關(guān)門!n”);ReleaseSemaphore(Semaphore_driver,1,NULL);
WaitForSingleObject(Semaphore_conductor,INFINITE);printf(“現(xiàn)在售票員開始售票。n”);printf(“nnnn”);pork++;} if(pork==Total_pork){ ReleaseSemaphore(Semaphore_driver,1,NULL);
WaitForSingleObject(Semaphore_conductor,INFINITE);printf(“售票員請(qǐng)開門讓乘客下車!n”);return 0;} Sleep(1000);} return 0;} //主函數(shù) int main(){ HANDLE Driver;HANDLE Conductor;
Semaphore_driver=CreateSemaphore(NULL,0,1,“semaphore_driver”);//創(chuàng)建Driver的信號(hào)量
Semaphore_conductor=CreateSemaphore(NULL,0,1,“semaphore_conductor”);//創(chuàng)建Conductor的信號(hào)量
Driver=CreateThread(NULL,0,Thread_Driver,&Driver,0,NULL);//創(chuàng)建Driver的線程
Conductor=CreateThread(NULL,0,Thread_Conductor,&Conductor,0,NULL);//創(chuàng)建Conductor的線程
CloseHandle(Driver);//關(guān)閉Driver的線程 CloseHandle(Conductor);//關(guān)閉Conductor的線程 //GetLastError();while(1);system(“pause”);return 0;}
程序執(zhí)行結(jié)果:
實(shí)驗(yàn)心得與反思:
通過本次實(shí)驗(yàn),加深了我們對(duì)進(jìn)程同步與互斥的理解,而且懂WaitForSingleObject函數(shù)的作用,它相當(dāng)于P操作;而ReleaseSemaphore函數(shù)相當(dāng)于V操作,用這兩個(gè)函數(shù)來實(shí)現(xiàn)P,V操作,以改變信號(hào)量的值,從而實(shí)現(xiàn)進(jìn)程同步。實(shí)驗(yàn)過程中,我們發(fā)現(xiàn)以下是我們應(yīng)該反思的:
1:線程的創(chuàng)建的函數(shù)的參數(shù)的理解還不太懂,主要是沒學(xué)過,對(duì)于其中的一些調(diào)用函數(shù)不太懂里面的意思。
2:線程的設(shè)計(jì)要考慮到各個(gè)情況,第一站和最后一戰(zhàn),還有其中的全局的變量的運(yùn)算的放到的是售票員的線程中,也就是其中的一些操作的位置問題,要考慮到同步的兩個(gè)線程之間的關(guān)系。3:關(guān)于信號(hào)量的問題,其要的是全局變量。
4:最最重要的是一些Win32 API 中的庫函數(shù)有關(guān)線程的創(chuàng)建等的理解,對(duì)其中的函數(shù)參量的理解有待進(jìn)一步學(xué)習(xí)理解。
09信管(2)班
何美西 109253030212 樊麗彬 109253030215 孔娜 109253030218
第二篇:司機(jī)與售票員原創(chuàng) 完整代碼
自己寫的:(功能感覺達(dá)到我要目的,感覺沒有把操作量層次寫出來,大家參考學(xué)習(xí))
#include
#define max 80//假設(shè)汽車的最大容量為80 int num=0;//初始還沒有啟動(dòng)客車上的人數(shù)為0 int sc=0;//上車的人數(shù) int xc=0;//下車的人數(shù)
int k;//上車-下車,停站上下車后后人數(shù)變化,即凈上車人數(shù);
//k=sc-xc;//凈上車人數(shù)/
int dr();int cd();
int check(){
if(sc==-1||xc==-1)
{cout<<“旅途愉快,汽車到達(dá)總站,再見”< exit(1); } return 0;} int dr()//司機(jī)driver的信號(hào)量 { //num=num+k;if(num<=max){ cout<<“汽車關(guān)門準(zhǔn)備開車!”< } cout<<“司機(jī)開車!”< int c,sji;//超載人數(shù)/實(shí)際上車人數(shù) k=sc-xc;//凈上車人數(shù)/ num=num+k;//上下乘客后車上人數(shù) if(num<=max) { cout<<“現(xiàn)在車上人數(shù)為:”< cout<<“坐好扶穩(wěn)!”< cout<<“===================================”< cout<<“===================================”< cout<<“===================================”< } if(num>max) { c=num-max;sji=sc-c; cout<<“超載”< num=max;cout<<“已下”< } return 0;} /*主函數(shù)*/ int main(){ cout<<“=========歡迎使用司機(jī)與售票員信息量同步公交車系統(tǒng)=============”< cout<<“請(qǐng)輸入上車人數(shù)!”< while(num>max) { cout<<“警告:輸入上車人數(shù)后,人數(shù)已經(jīng)超過限載人數(shù),輸入錯(cuò)誤請(qǐng)重新輸入”< cout<<“重新輸入上車人數(shù)為:”< cin>>sc; num=sc; check(); } cout<<“第一次啟動(dòng)上車人數(shù)為”< check(); while(sc!=-1||xc!=-1) { cout<<“汽車行駛中.......!”< cout<<“請(qǐng)輸入下車人數(shù)!”< check(); while(xc>num) { cout<<“輸入下車人數(shù)超過車上人數(shù),輸入錯(cuò)誤,請(qǐng)重新輸入”< cout<<“重新輸入下車人數(shù)為:”< cin>>xc; check(); } cout<<“請(qǐng)輸入上車人數(shù)!”< //cout<<“上車人數(shù)為”< check();if(num>max) { cout<<“警告:輸入上車人數(shù)后車?yán)锶藬?shù)已經(jīng)超過車的限載人數(shù)”< } //num=num+sc-xc;//上下乘客后車上人數(shù) //cout<<“車上人數(shù)總共為”< dr(); } return 0;} 網(wǎng)上下載的:好像作者上傳缺少311.h頭文件 #include using namespace std; HANDLE Semaphore_dirver;//司機(jī)信號(hào)量的句柄 HANDLE Semaphore_condutor;//售票員信號(hào)量的句柄 int num_station=0; //司機(jī)進(jìn)程 void Thread_Driver(){ while(true) { if(WaitForSingleObject(Semaphore_dirver,INFINITE)==WAIT_OBJECT_0)//相當(dāng)與P(Semaphore_dirver)操作 {cout<<“汽車行駛中,請(qǐng)您扶穩(wěn)坐好!”< Sleep(5000);//行車時(shí)間 } ReleaseSemaphore(Semaphore_condutor, 1, NULL);//相當(dāng)與V(Semaphore_condutor)操作提醒售票員可以售票了 } } //售票員進(jìn)程 void Thread_Conductor(){ while(true) { if(WaitForSingleObject(Semaphore_condutor,INFINITE)==WAIT_OBJECT_0)//判斷車是否已停 if(!num_station) //第一站 {cout<<“沒人下車”< num_station++; NUM_ON=random_num(NUM_MAX); Sleep(3000);//乘客上車時(shí)間 cout< NUM_CURRENT=NUM_ON+NUM_INITIAL;//起始站上車的人數(shù) } else { cout<<“車輛進(jìn)站,請(qǐng)您注意安全!開門請(qǐng)當(dāng)心,下車請(qǐng)走好!下車后請(qǐng)勿從車前繞行!”< Sleep(3000);//乘客下車時(shí)間 NUM_DOWN=random_num(NUM_CURRENT);//下車人數(shù) cout< NUM_CURRENT=NUM_CURRENT-NUM_DOWN;//下車后的人數(shù) if(NUM_CURRENT { cout<<“311路無人售票車開往南門,請(qǐng)您按順序投幣上車!”< cout<<“上車的乘客請(qǐng)從后門移動(dòng),準(zhǔn)備下車!”< Sleep(3000);//乘客上車時(shí)間 NUM_ON=random_num(NUM_MAX-NUM_CURRENT);//上車人數(shù) cout< NUM_CURRENT=NUM_CURRENT+NUM_ON;//上車后人數(shù) cout<<“車上有”< } else cout<<“座位已滿,請(qǐng)等下一輛!”< } ReleaseSemaphore(Semaphore_dirver,1,NULL);//讓司機(jī)開車的信號(hào) } } /*主函數(shù)*/ int main(){ HANDLE thread[2];//定義兩個(gè)線程句柄 Semaphore_dirver = CreateSemaphore(NULL,1, 1, NULL);//司機(jī)信號(hào)量 Semaphore_condutor = CreateSemaphore(NULL, 0, 1, NULL);//售票員信號(hào)量 DWORD threadID[2]; thread[0]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Thread_Driver),NULL,0,&threadID[0]);//司機(jī)進(jìn)程 thread[1]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Thread_Conductor),NULL,0,&threadID[1]);//售票員進(jìn)程 WaitForMultipleObjects(1, thread, TRUE, INFINITE);//等待兩個(gè)線程結(jié)束 return 0;} 汽車售票員阿姨 今年暑假,媽媽帶我去溫州小姑家做客。 一路上,車子輕快地奔馳著,窗外風(fēng)景優(yōu)美,山上綠樹成蔭,綠油油的小草仿佛給山上鋪上一層厚厚的毛毯。在車上,我和媽媽有說有笑。我一邊喝著尖叫的飲料,一邊唱著歡快的歌曲。突然一個(gè)急剎車,我一陣惡心,急忙對(duì)媽媽說:媽媽很想吐。媽媽連忙蹲下拿塑料袋,可我嘩一下全吐在了媽媽身上。全車人都回過頭來捂著嘴看著媽媽,媽媽狼狽不堪。正在這時(shí),售票員阿姨毫不猶豫的拿來紙巾,一邊替我擦拭吐在身上的臟物,一邊安慰說:別急,別急,你等會(huì)會(huì)好的。還倒開水給我喝,過了一會(huì)兒我舒服多了,不知不覺中我在媽媽的懷里睡著了。 當(dāng)我再醒來的時(shí)候,車子停住了。我特意去看了看了那位阿姨。她秀麗端莊,和藹可親,嘴角上堆滿笑容。你看,她又在忙著扶一位白發(fā)蒼蒼的老奶奶上車,幫助上下車的乘客拿行李。這就是汽車售票員阿姨。 操作系統(tǒng):用多線程模擬汽車司機(jī)與售票員需求分析試驗(yàn)報(bào)告 本實(shí)驗(yàn)利用多線程模擬汽車司機(jī)與售票員之間的協(xié)同工作即同步過程。一方面只有售票員把車門關(guān)好了司機(jī)才能開車,因此,售票員關(guān)好車門應(yīng)通知司機(jī)開車;另一方面,只有汽車已經(jīng)停下,售票員才能開門上下客,故司機(jī)停車后應(yīng)通知售票員。實(shí)驗(yàn)的結(jié)果是在屏幕顯示二者的同步過程。 一、設(shè)計(jì)過程 基本原理:在Windows的一個(gè)進(jìn)程內(nèi)包含一個(gè)或多個(gè)線程,32位Windows環(huán)境下的WIN32 API提供了多線程應(yīng)用程序開發(fā)所需的接口函數(shù),本實(shí)驗(yàn)就是C++語言編寫的WIN32 API的多線程編程。具體過程: 1.創(chuàng)建兩個(gè)信號(hào)對(duì)象,設(shè)定初始值; 2.創(chuàng)建兩個(gè)子線程函數(shù),一個(gè)為司機(jī)的操作過程,一個(gè)為售票員的操作過程。我們?cè)谶@里設(shè)定站點(diǎn)數(shù)為10個(gè);在司機(jī)操作的子線程中,用一個(gè)while循環(huán),當(dāng)?shù)阶詈笠徽緯r(shí),就退出,此時(shí),程序運(yùn)行結(jié)束。3.編寫主線程函數(shù),在其中調(diào)用兩個(gè)子線程。 二、源代碼 #include HANDLE hSemaphore1=CreateSemaphore(NULL, 0, 1, NULL);HANDLE hSemaphore2=CreateSemaphore(NULL, 0, 1, NULL); int station=1; DWORD WINAPI ThreadDriver(LPVOID LpParameter){ while(station<=10){ cout<<“司機(jī)正常行車”< cout<<“前方為”< if(station==10) { cout<<“終點(diǎn)站到了”< return 0; } cout<<“到達(dá)”< ReleaseSemaphore(hSemaphore2,1,NULL); WaitForSingleObject(hSemaphore1,INFINITE); cout<<“離站開車”< Sleep(500); station++;} return 0;} DWORD WINAPI ThreadConductor(LPVOID LpParameter){ while(1){ WaitForSingleObject(hSemaphore2,INFINITE); cout<<“售票員開門”< cout<<“售票員關(guān)門”< cout<<“售票員向剛上車售票”< ReleaseSemaphore(hSemaphore1,1,NULL); Sleep(1000); } return 0;} int main(){ HANDLE hDriver;HANDLE hConductor;cout<<“多線程模擬司機(jī)售票員同步過程n”;cout<<“----------------------------n”; hDriver=CreateThread(NULL,0,ThreadDriver,NULL,0,NULL);Sleep(10);hConductor=CreateThread(NULL,0,ThreadConductor,NULL,0,NULL);Sleep(300000);CloseHandle(hDriver);CloseHandle(hConductor);return 0;} 三、運(yùn)行結(jié)果: 多線程模擬司機(jī)售票員同步過程----------------------------司機(jī)正常行車 前方為1站點(diǎn) 到達(dá)1站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為2站點(diǎn) 到達(dá)2站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為3站點(diǎn) 到達(dá)3站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為4站點(diǎn) 到達(dá)4站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為5站點(diǎn) 到達(dá)5站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為6站點(diǎn) 到達(dá)6站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為7站點(diǎn) 到達(dá)7站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為8站點(diǎn) 到達(dá)8站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為9站點(diǎn) 到達(dá)9站點(diǎn) 售票員開門 乘客正在上車 售票員關(guān)門 售票員向剛上車售票 離站開車 司機(jī)正常行車 前方為10站點(diǎn) 終點(diǎn)站到了 四、程序結(jié)果分析 從運(yùn)行結(jié)果看,基本上模擬了司機(jī)和售票員的同步過程。此程序簡單的實(shí)現(xiàn)了線程間的同步過程,即運(yùn)用win32提供的接口函數(shù),主要是CreateThread,WaitForSingleObject,ReleaseSemaphore這幾個(gè)函數(shù)實(shí)現(xiàn)主要功能。 程序還有很多欠缺,需要做進(jìn)一步的改進(jìn)。比如可以實(shí)際線路的同步過程,考慮司機(jī)與售票員同步過程中的更多現(xiàn)實(shí)因素,比如,提供站點(diǎn)時(shí)間、上下車人數(shù)等等,將其運(yùn)用到實(shí)際當(dāng)中去。 計(jì)算機(jī)操作系統(tǒng)實(shí)驗(yàn)報(bào)告 -------售票員和汽車司機(jī)的進(jìn)程同步問題 一、設(shè)計(jì)分析 司機(jī)與售票員要協(xié)同工作:一方面只有售票員把門關(guān)好之后司機(jī)才能開車,因此售票員關(guān)好門之后要通知司機(jī)開車;另一方面,也只有司機(jī)把車停下之后售票員才能開門讓乘客下車和上車,此時(shí)司機(jī)應(yīng)通知售票員。汽車當(dāng)前正在始發(fā)站停車讓乘客上車。因此,必須設(shè)置一定的信號(hào)量來實(shí)現(xiàn)他們之間的同步問題。 把司機(jī)與售票員的信號(hào)量設(shè)置為全局變量,并把客車上的人數(shù):現(xiàn)在人數(shù)、下車人數(shù)、上車人數(shù)設(shè)置為全局變量;設(shè)置司機(jī)與售票員各自的線程。考慮到第一站和最后一站的問題,應(yīng)單獨(dú)處理,故在各自的線程中分情況討論: 由于下車的人數(shù)是隨機(jī)的,設(shè)計(jì)時(shí)考慮到了人數(shù)可能會(huì)超過客車的最大上限的問題。具體的思路是下面的圖示。 二、算法實(shí)現(xiàn)(源代碼) #include //假設(shè)汽車的最大容量為88 #define total_pork 9 //總的站數(shù) int recent_num=0; //某一時(shí)刻的客車上的人數(shù) int get_on_num; //上車的人數(shù) int get_off_num; //下車的人數(shù) int pork=1; //賦初始值 HANDLE SJ; //司機(jī)的信號(hào)量 HANDLE SPY; //售票員的信號(hào)量 int Get_random(int min, int max) //產(chǎn)生一定范圍的隨機(jī)數(shù),可避免下面程序的判斷超出客車的最大容量問題{ int a;srand((int)time(0)); while(1){ a=rand()%(total_num+1);if(a>=min && a<=max)return a;} } //司機(jī)的線程 DWORD WINAPI Thread_Driver(LPVOID Driver){ while(pork<=total_num){ if(pork==total_pork){ WaitForSingleObject(SJ,INFINITE);cout<<“到達(dá)總站,歡迎您下次乘坐**路公交車”< { ReleaseSemaphore(SPY,1, NULL);WaitForSingleObject(SJ,INFINITE);cout<<“汽車啟動(dòng)”< } Sleep(1000);} return 0;} //售票員的線程 DWORD WINAPI Thread_Conductor(LPVOID SPY){ while(1){ if(pork cout<<“這是第”< WaitForSingleObject(SPY,INFINITE);if(pork==1){ cout<<“SPY開始售票”< get_on_num=Get_random(0,total_num-recent_num); cout< recent_num+=get_on_num;cout<<“共有”< { cout<<“SJ停好車,乘客開始上下車”< get_off_num=Get_random(0,recent_num); cout< return 0;} //主函數(shù) int main(){ HANDLE SJ;HANDLE SPY;SJ=CreateSemaphore(NULL,0,1,“semaphore_driver”);//創(chuàng)建司機(jī)的信號(hào)量 SPY=CreateSemaphore(NULL,0,1,“semaphore_conductor”);//創(chuàng)建售票員的信號(hào)量 SJ=CreateThread(NULL,0,Thread_Driver,&SJ,0,NULL);//創(chuàng)建司機(jī)的線程 SPY=CreateThread(NULL,0,Thread_Conductor,&SPY,0,NULL);//創(chuàng)建售票員的線程 CloseHandle(SJ);CloseHandle(SPY);while(1);system(“pause”);return 0;} 三.實(shí)現(xiàn)結(jié)果 四、心得體會(huì) 1、因?yàn)樗緳C(jī)與售票員是兩條單獨(dú)處理的線程。程序先對(duì)司機(jī)的線程進(jìn)行設(shè)計(jì),接著再進(jìn)行售票員的線程設(shè)計(jì)。因?yàn)閮烧呤切枰嗷f(xié)調(diào),又先后順序的,所以編起程序來比較復(fù)雜,而且很亂,尤其對(duì)于第一次接觸的我們而言。 2、上下車的人數(shù)是隨機(jī)的,所以,我們?cè)诰幊绦驎r(shí)必須注意使程序能夠判斷所出現(xiàn)的隨機(jī)數(shù)在汽車可以承載的最大容量之內(nèi)。 3、C++語言基礎(chǔ)不是很好,所以編起程序來比較費(fèi)力,這種設(shè)計(jì)性的實(shí)驗(yàn)對(duì)于我們而言還是有一定的難度的,所以部分程序是參照網(wǎng)上的類似程序。第三篇:汽車售票員阿姨
第四篇:用多線程模擬汽車司機(jī)與售票員需求分析試驗(yàn)報(bào)告
第五篇:計(jì)算機(jī)操作系統(tǒng)-司機(jī)與售票員的進(jìn)程問題-實(shí)驗(yàn)報(bào)告