linux操作系統(tǒng)-實(shí)驗(yàn)五-Linux多線(xiàn)程編程

linux操作系統(tǒng)-實(shí)驗(yàn)五-Linux多線(xiàn)程編程

ID:47893693

大?。?1.00 KB

頁(yè)數(shù):3頁(yè)

時(shí)間:2019-10-19

linux操作系統(tǒng)-實(shí)驗(yàn)五-Linux多線(xiàn)程編程_第1頁(yè)
linux操作系統(tǒng)-實(shí)驗(yàn)五-Linux多線(xiàn)程編程_第2頁(yè)
linux操作系統(tǒng)-實(shí)驗(yàn)五-Linux多線(xiàn)程編程_第3頁(yè)
資源描述:

《linux操作系統(tǒng)-實(shí)驗(yàn)五-Linux多線(xiàn)程編程》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)

1、《操作系統(tǒng)》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)序號(hào):5實(shí)驗(yàn)項(xiàng)目名稱(chēng):Linux多線(xiàn)程編程學(xué)號(hào)姓名專(zhuān)業(yè)、班實(shí)驗(yàn)地點(diǎn)指導(dǎo)教師實(shí)驗(yàn)時(shí)間2015.10」3一、實(shí)驗(yàn)?zāi)康募耙笸ㄟ^(guò)本實(shí)驗(yàn)的學(xué)習(xí),使學(xué)生掌握Linux多線(xiàn)程編程的基本方法。以學(xué)生自主訓(xùn)練為主的開(kāi)放模式組織教學(xué)二、實(shí)驗(yàn)設(shè)備(軟硬件環(huán)境)及要求安製有Ubuntu系統(tǒng)的VMWarc三、實(shí)驗(yàn)內(nèi)容與步驟實(shí)驗(yàn)內(nèi)容:利用Linux多線(xiàn)程實(shí)現(xiàn)題目所要求的功能。實(shí)驗(yàn)步驟:1、根據(jù)教材實(shí)踐Linux線(xiàn)程管理指令2、利用Linux多線(xiàn)程編程實(shí)現(xiàn)以下功能:創(chuàng)建兩個(gè)子進(jìn)程;一個(gè)子線(xiàn)程(生產(chǎn)者線(xiàn)程)依次向緩沖區(qū)寫(xiě)入整數(shù)0,1,2

2、,...,19;另一個(gè)子線(xiàn)程(消費(fèi)者線(xiàn)程)暫停3s后,從緩沖區(qū)讀數(shù),每次讀一個(gè),并將讀出的數(shù)字從緩沖區(qū)刪除,然后將數(shù)字顯示出來(lái);父線(xiàn)程等待了線(xiàn)程2(消費(fèi)者線(xiàn)程)的退出信息,待收集到該信息后,父線(xiàn)程就返回。四、實(shí)驗(yàn)結(jié)果、數(shù)據(jù)處理與過(guò)程截圖實(shí)驗(yàn)結(jié)果如下:zx@ubuntu:~/work$gcc5.c?o5-Ipthreadzx@ubuntu:~/work$./5Vthread:writebufferfinish亀adbufferthreadreaddata:0123456789101819readoverwaitingforreadt

3、hreadtofinish???readthread5OK,havefun!!exitByeByezx@ubuntu:~/wo「k$■用gcc編譯的吋候需要加-Ipthread,否則會(huì)出現(xiàn)以下錯(cuò)誤:zx@uDuntu:~/worK>gcc5.c-o5/tnp/ccOq4nf2.o:Infunctionmain':S.c:(.text+0x67):undefinedreferencetopthread^create*5>c:(?text+0xb7):undefinedreferencetopthread_joi(V五、思考題多進(jìn)程編

4、程與多線(xiàn)程編程有何區(qū)別?相同點(diǎn):Linux下不管是多線(xiàn)程編程還是多進(jìn)程編程,最終都是用do_fork實(shí)現(xiàn)不同點(diǎn):父子進(jìn)程變量是互不影響的,由于父子進(jìn)程地址空間是完全隔開(kāi)的,變量的地址可以是完全相同的。LinuxH編程多用多進(jìn)程編程少用多線(xiàn)程編程。多線(xiàn)程比多進(jìn)程成本低,但性能更低:多進(jìn)程是立體交通系統(tǒng),雖然造價(jià)高,上坡下坡多耗點(diǎn)油,但是不;多線(xiàn)程是平面交通系統(tǒng),造價(jià)低,但紅綠燈太多,老堵車(chē)。1、多進(jìn)程:子進(jìn)程是父進(jìn)程的復(fù)制品。子進(jìn)程獲得父進(jìn)程數(shù)據(jù)空間、堆和棧的復(fù)制品。2、多線(xiàn)程:相對(duì)與進(jìn)程而言,線(xiàn)程是一個(gè)更加接近與執(zhí)行體的概念,它可

5、以與同進(jìn)程的其他線(xiàn)程共享數(shù)據(jù),但擁有自C的??臻g,擁有獨(dú)立的執(zhí)行序列。兩者都可以提高程序的并發(fā)度,提高程序運(yùn)行效率和響應(yīng)時(shí)間。3、線(xiàn)程和進(jìn)程在使用上各有優(yōu)缺點(diǎn):線(xiàn)程執(zhí)行開(kāi)銷(xiāo)小,但不利于資源管理和保護(hù);而進(jìn)程止和反。同時(shí),線(xiàn)程適合于在5MP機(jī)器上運(yùn)行,而進(jìn)程則可以跨機(jī)器遷移。六、教師評(píng)語(yǔ)成績(jī)簽名:日期:代碼:#include#include#include#include#includecharglobe_buffer[100];vo

6、id*read_buffer_thread(void*arg);intmain(){intres.i;pthread_tread_thread;for(i=0;i<20;i++)globe_buffer[i

7、=i;printf(Mxianchengthread:writebufferfinish,r);slccp(3);res=pthread_create(&read_thread,NULL,read_buffer_thread,NULL);if(res!=0){printf("ReadThreadcreatError!"

8、);exit(O);}sleep(l);printf(Hwaitingforreadthreadtofinish...H);res=pthreadjoin(read_thread,NULL);if(res!=0){printf("readthreadjoinfailed!");exit(O);}printf(MreadthreadxianchengOK,havefun!!exitByeByen);return0;}void*read_buffer_thread(void*arg){inti,x;printf(nRead

9、bufferthreadreaddata:H);for(i=0;i<20;i++)x=globe_buffer[i];printf(n%d役x);globe_buffer[i]=0;}printf(MreadoverM);

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。