Linux多線程編程入門.ppt

Linux多線程編程入門.ppt

ID:51489127

大小:153.00 KB

頁數(shù):14頁

時間:2020-03-24

Linux多線程編程入門.ppt_第1頁
Linux多線程編程入門.ppt_第2頁
Linux多線程編程入門.ppt_第3頁
Linux多線程編程入門.ppt_第4頁
Linux多線程編程入門.ppt_第5頁
資源描述:

《Linux多線程編程入門.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、多核程序設計Linux多線程編程2008年4月POSIX線程庫Pthreads介紹IEEEPOSIX標準p1003.1c(Pthreads)定義了處理線程的一系列C語言類型的API。在Linux中,線程一般被認為是“輕量級的進程”。Linux創(chuàng)建進程所使用的函數(shù)是fork()或者vfork()。而對線程的創(chuàng)建和管理Linux可以使用POSIX的線程庫pthreads提供的APIs。使用fork()創(chuàng)建進程和使用POSIX線程庫差別:使用fork()創(chuàng)建進程的特點:代價昂貴,通常子進程需要拷貝父進程的整個上下文,比如數(shù)據(jù)等。進程間的通信方式比較復雜,比如使用管道、

2、消息、共享內(nèi)存等方法。操作系統(tǒng)在實現(xiàn)進程間的切換比線程切換更費時。使用POSIXpthreads庫創(chuàng)建線程的特點:線程可使用存在于進程中的資源,因此創(chuàng)建進程比創(chuàng)建線程更快。線程間的通信方式更容易,比如通過進程中的變量,可以讓多個線程共享數(shù)據(jù)。操作系統(tǒng)對線程的切換比對進程的切換更容易和快速。POSIXpthreads庫線程的創(chuàng)建pthreads線程庫中提供的創(chuàng)建線程的函數(shù)是pthread_create()#includeintpthread_create(pthread_t*thread,pthread_attr_t*attr,void*(*

3、start_routine)(void*),void*arg);線程的退出在線程的處理函數(shù)中,可以顯示的調(diào)用pthread_exit()結(jié)束線程執(zhí)行,也可以不調(diào)用pthread_exit(),而只是讓線程處理程序返回。除了pthread_exit()函數(shù),可以讓當前調(diào)用pthread_exit()的線程顯示地退出外,線程也可以使用pthread_cancel()函數(shù)終止其他線程的執(zhí)行。POSIXpthreads庫(續(xù))等待線程結(jié)束pthread_join()函數(shù)會掛起創(chuàng)建線程的線程的執(zhí)行,直到等待到想要等待的子線程。intpthread_join(pthread

4、_tth,void**thread_return);線程的分離主線程創(chuàng)建子線程,且子線程本身自己有自我回收內(nèi)存資源的能力。intpthread_detach(pthread_tth);獲得當前線程標志使用pthread_self()函數(shù)可以獲得當前線程的標志,pthread_self()的返回值就是當前線程的標志。pthread_tpthread_self(void);使用Pthreads編寫的程序例子#include#include#include#include#defineTH

5、READ_NUMBER2intretval_hello1=2,retval_hello2=3;void*hello1(void*arg){char*hello_str=(char*)arg;sleep(1);printf("%s",hello_str);pthread_exit(&retval_hello1);}void*hello2(void*arg){char*hello_str=(char*)arg;sleep(2);printf("%s",hello_str);pthread_exit(&retval_hello2);}使用Pthreads編寫的

6、程序例子(續(xù))intmain(intargc,char*argv[]){inti;intret_val;int*retval_hello[2];pthread_tpt[THREAD_NUMBER];constchar*arg[THREAD_NUMBER];arg[0]="helloworldfromthread1";arg[1]="helloworldfromthread2";printf("Begintocreatethreads...");ret_val=pthread_create(&pt[0],NULL,hello1,(void*)arg[0]);i

7、f(ret_val!=0){printf("pthread_createerror!");exit(1);使用Pthreads編寫的程序例子(續(xù)2)ret_val=pthread_create(&pt[1],NULL,hello2,(void*)arg[1]);if(ret_val!=0){printf("pthread_createerror!");exit(1);}printf("Now,themainthreadreturns.");printf("Begintowaitforthreads...");for(i=0;i

8、MBER;i++){re

當前文檔最多預覽五頁,下載文檔查看全文

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

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