




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程實(shí)驗(yàn)報(bào)告課程名稱:線程控制實(shí)驗(yàn)專業(yè)班級(jí):學(xué)號(hào):姓名:報(bào)告日期:12月03日計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院線程控制實(shí)驗(yàn)一、目的和規(guī)定通過本實(shí)驗(yàn)掌握在Linux操作系統(tǒng)中遵照Posix線程原則接口進(jìn)行多線程程序編程,純熟掌握線程的創(chuàng)立pthread_create(),線程終止pthread_exit(),等待線程合并pthread_join()等線程控制的操作,運(yùn)用信號(hào)量或者互斥鎖實(shí)現(xiàn)線程間的同時(shí)。二、實(shí)驗(yàn)內(nèi)容問題:求100000個(gè)浮點(diǎn)數(shù)(精確小數(shù)點(diǎn)右4位)的平均值(和、最大值、最小值)流程圖: S求2.5萬(wàn)個(gè)浮點(diǎn)數(shù)的部分和求2.5萬(wàn)個(gè)浮點(diǎn)數(shù)的部分和求2.5萬(wàn)個(gè)浮點(diǎn)數(shù)的部分和求2.5萬(wàn)個(gè)浮點(diǎn)數(shù)的部分和求10萬(wàn)個(gè)數(shù)之和 F隨機(jī)生成10萬(wàn)個(gè)浮點(diǎn)數(shù)環(huán)節(jié):1、隨機(jī)生成100000個(gè)浮點(diǎn)數(shù);2、創(chuàng)立4個(gè)子線程,分別求25000個(gè)浮點(diǎn)數(shù)之和;3、完畢100000個(gè)浮點(diǎn)數(shù)之和并打印成果;4、統(tǒng)計(jì)多線程并發(fā)執(zhí)行完畢計(jì)算的時(shí)間;5、寫一種單線程程序,同樣完畢10萬(wàn)個(gè)隨機(jī)數(shù)求和的計(jì)算,統(tǒng)計(jì)計(jì)算時(shí)間,并和前面的成果對(duì)比;6、讓單線程程序睡眠四秒鐘、多線程程序各子線程睡一秒的條件下(兩程序的總睡眠時(shí)間相似),對(duì)比執(zhí)行成果;7、分析兩次對(duì)比成果的差別,寫出自己的見解。三、運(yùn)行成果及分析1、多線程(子線程睡眠1秒)2、單線程(睡眠1秒)3、單線程(睡眠4秒)4、成果分析 (1)多線程(子線程睡眠時(shí)間1秒)用時(shí)2.4055秒,單線程(睡眠1秒)用時(shí)1.9960,單線程運(yùn)算比多線程快,由于多線程分為四部分運(yùn)算,睡眠4次,而單線程只睡眠1次,故單線程用時(shí)短。 (2)單線程(睡眠時(shí)間4秒)用時(shí)4.9919秒,而多線程(子線程睡眠時(shí)間1秒)用時(shí)2.4055秒,由于多線程是并發(fā)執(zhí)行,當(dāng)不使用公共外部變量時(shí),四個(gè)部分能夠同時(shí)執(zhí)行,其累計(jì)睡眠時(shí)間約1秒,而單線程睡眠時(shí)間為4秒,故多線程用時(shí)短。 (3)總而言之,能夠發(fā)現(xiàn)多線程有時(shí)用時(shí)比單線程短諸多,有時(shí)用時(shí)比單線程長(zhǎng)某些,重要與睡眠時(shí)間有關(guān)。相似睡眠時(shí)間,單線程更快;總睡眠時(shí)間相似時(shí),多線程更快。多線程并發(fā)執(zhí)行,能夠使非公共資源調(diào)用部分同時(shí)執(zhí)行從而節(jié)省了時(shí)間;在調(diào)用公共資源時(shí)會(huì)產(chǎn)生等待時(shí)間,從而產(chǎn)生了延時(shí)。四、心得體會(huì) 即使安裝Linux很久了,但是還沒有試過編程,因此去了實(shí)驗(yàn)室啥也不會(huì),想百度發(fā)現(xiàn)自己的機(jī)子連不了網(wǎng),只得認(rèn)真閱讀老師給的線程控制實(shí)驗(yàn)文檔,試著把例子運(yùn)行了一下,之后又請(qǐng)教了大神,觀摩了許久,才完畢了程序。由于模仿例子編程,在助教檢查時(shí)回答下列問題時(shí)全答錯(cuò)了,看來(lái)上課不夠用心,對(duì)程序及進(jìn)程的理解不夠深刻。本次實(shí)驗(yàn)之后,我終于明白,并發(fā)執(zhí)行并不是只有一種子進(jìn)程睡眠時(shí)另一種子進(jìn)程才開始運(yùn)行,各子進(jìn)程同時(shí)開始并發(fā)執(zhí)行,同時(shí)在助教的解說(shuō)下,對(duì)各程序函數(shù)意義有了深刻認(rèn)識(shí)。源程序:多進(jìn)程:#include<stdio.h>#include<pthread.h>#include<semaphore.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#defineMAX25000#include<sys/time.h>pthread_mutex_tmutex;floatsum=0;voidchild(int*k){ inti; floatj;floatsum1=0; for(i=1;i<MAX;i++){ srand(time(0)); j=(float)rand()/rand();pthread_mutex_lock(&mutex); sum=sum+j;pthread_mutex_unlock(&mutex);sum1=sum1+j;} printf("Thread%d:sum%d=%.4f\n",*k,*k,sum1);sleep(1);}intmain(void){ intk1=1,k2=2,k3=3,k4=4;pthread_tchild1,child2,child3,child4;structtimevalstart;structtimevalend; gettimeofday(&start,NULL); pthread_mutex_init(&mutex,NULL);pthread_create(&child1,NULL,(void*)&child,&k1); pthread_create(&child2,NULL,(void*)&child,&k2); pthread_create(&child3,NULL,(void*)&child,&k3); pthread_create(&child4,NULL,(void*)&child,&k4);pthread_join(child1,NULL);pthread_join(child2,NULL);pthread_join(child3,NULL);pthread_join(child4,NULL);printf("sum=%.4f\n",sum); gettimeofday(&end,NULL); printf("time=%.4f\n",(end.tv_sec-start.tv_sec)+(float)(end.tv_usec-start.tv_usec)/1000000);return0;}單進(jìn)程:#include<stdio.h>#include<pthread.h>#include<semaphore.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#defineMAX100000#include<sys/time.h>pthread_mutex_tmutex;floatsum=0;voidchild(int*k){ inti; floatj;floatsum1=0; for(i=1;i<MAX;i++){ srand(time(0)); j=(float)rand()/rand();pthread_mutex_lock(&mutex); sum=sum+j;pthread_mutex_unlock(&mutex);sum1=sum1+j;} printf("Thread%d:sum%d=%.4f\n",*k,*k,sum1);sleep(1);}intmain(void){ intk1=1,k2=2,k3=3,k4=4;pthread_tchild1,child2,child3,child4;structtimevalstart;structtimevalend; gettimeofday(&start,NULL); pthread_mutex_init(&mutex,NULL);pthread_create(&child1,NULL,(void*)&child,&k1);pthread_join(child1,NU
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度航空航天行業(yè)勞務(wù)派遣公司合作協(xié)議
- 2025年度跨區(qū)域產(chǎn)業(yè)鏈協(xié)同發(fā)展合作協(xié)議補(bǔ)充協(xié)議
- 二零二五年度物流行業(yè)實(shí)習(xí)生勞動(dòng)合同
- 2025年度美容美發(fā)店鋪次轉(zhuǎn)租經(jīng)營(yíng)合同
- 2025年度自愿放棄小孩撫養(yǎng)權(quán)及子女財(cái)產(chǎn)權(quán)益保護(hù)協(xié)議
- 二零二五年度荒山荒地個(gè)人土地承包開發(fā)合同
- 二零二五年度個(gè)人藝術(shù)創(chuàng)作借款合同激發(fā)創(chuàng)意無(wú)限
- 二零二五年度抵押車交易合同簽訂風(fēng)險(xiǎn)預(yù)判與應(yīng)對(duì)措施
- 電子支付技術(shù)的崛起對(duì)生活的影響
- 家政服務(wù)人員聘用及保險(xiǎn)配套協(xié)議(2025年度)
- 企業(yè)反商業(yè)賄賂法律法規(guī)培訓(xùn)
- 2023合同香港勞工合同
- 玻璃體腔注射-操作流程和注意事項(xiàng)(特選參考)課件
- 材料化學(xué)課件
- 智能傳感器芯片
- -《多軸數(shù)控加工及工藝》(第二版)教案
- 智能交通概論全套教學(xué)課件
- 生物醫(yī)學(xué)工程倫理 課件全套 第1-10章 生物醫(yī)學(xué)工程與倫理-醫(yī)學(xué)技術(shù)選擇與應(yīng)用的倫理問題
- 燒結(jié)機(jī)安裝使用說(shuō)明書
- 新戰(zhàn)略營(yíng)銷課件
- (完整版)部編一年級(jí)下冊(cè)語(yǔ)文《春夏秋冬》ppt
評(píng)論
0/150
提交評(píng)論