實(shí)驗(yàn)一-Linux多線程編程一.doc

實(shí)驗(yàn)一-Linux多線程編程一.doc

ID:55027697

大?。?7.00 KB

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

時(shí)間:2020-04-26

實(shí)驗(yàn)一-Linux多線程編程一.doc_第1頁(yè)
實(shí)驗(yàn)一-Linux多線程編程一.doc_第2頁(yè)
實(shí)驗(yàn)一-Linux多線程編程一.doc_第3頁(yè)
實(shí)驗(yàn)一-Linux多線程編程一.doc_第4頁(yè)
實(shí)驗(yàn)一-Linux多線程編程一.doc_第5頁(yè)
資源描述:

《實(shí)驗(yàn)一-Linux多線程編程一.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、實(shí)驗(yàn)一Linux多線程編程I一、實(shí)驗(yàn)?zāi)康氖煜NUGCC編譯器,能夠用Pthreads線程庫(kù)熟練編寫(xiě)多線程程序。二、實(shí)驗(yàn)內(nèi)容1、設(shè)一個(gè)double型的一維數(shù)組,數(shù)組長(zhǎng)度是1,000,000,計(jì)算全數(shù)組部元素的和。要求:1)編制一個(gè)串行程序,僅有一個(gè)主線程完成上述計(jì)算。2)編制一個(gè)多線程程序,除主線程外,派生四個(gè)子線程完成上述計(jì)算。分別獲得以上兩個(gè)程序的計(jì)算時(shí)間,對(duì)比分析。2、定義以下三個(gè)數(shù)組:#defineLEN;DoubleA[LEN],B[LEN],C[LEN];for(i=0;i++;i

2、]}分別編制一段串行程序和一段多線程程序(包括四個(gè)線程),執(zhí)行上述循環(huán)體,比較其執(zhí)行所花費(fèi)的時(shí)間。提示:clock()是C/C++中的計(jì)時(shí)函數(shù),與其相關(guān)的數(shù)據(jù)類(lèi)型是clock_t,通過(guò)clock()可以獲得當(dāng)前的系統(tǒng)時(shí)間。四、實(shí)驗(yàn)步驟1、打開(kāi)Linux終端2、輸入命令$emacshello.c&(文件名可以自定義)3、編制源程序,注意加入必要的頭文件#include,對(duì)于信號(hào)量,還需要加頭文件。4、編譯:$gcc-ohellohello.c–lpthread對(duì)于是信號(hào)量,編譯時(shí)還需要加-lrt參數(shù)。5、執(zhí)行:./hello五、實(shí)驗(yàn)

3、要求寫(xiě)出完整的源程序,給出程序執(zhí)行的結(jié)果。串行實(shí)驗(yàn)源代碼如下:#include#include#include#include#defineLENvoidmain(){time_tt1,t2;doubleD[LEN];inti;doublesum=0.0;t1=clock();for(i=0;i#include

4、tdio.h>#include#include#defineLENpthread_tthread[4];pthread_mutex_tmut;intnumber=0,i;doubleD[LEN];doublesum=0.0;void*thread1(){for(i=0;i

5、ex_lock(&mut);sum+=D[i];pthread_mutex_unlock(&mut);}pthread_exit(NULL);}void*thread3(){for(i=0;i

6、d_exit(NULL);}voidthread_create(void){inttemp;memset(&thread,0,sizeof(thread));if((temp=pthread_create(&thread[0],NULL,thread1,NULL))!=0)printf("線程1創(chuàng)建失敗!");elseprintf("線程1被創(chuàng)建");if((temp=pthread_create(&thread[1],NULL,thread2,NULL))!=0)printf("線程2創(chuàng)建失敗");elseprintf("線程2被創(chuàng)建");if((temp=pth

7、read_create(&thread[2],NULL,thread3,NULL))!=0)printf("線程3創(chuàng)建失敗");elseprintf("線程3被創(chuàng)建");if((temp=pthread_create(&thread[3],NULL,thread4,NULL))!=0)printf("線程4創(chuàng)建失敗");elseprintf("線程4被創(chuàng)建");}voidthread_wait(void){if(thread[0]!=0){pthread_join(thread[0]

當(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. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(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)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。