pthread_create
功能
pthread_create是unix環境建立執行緒函式
函式原型
int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);
第乙個引數為指向執行緒識別符號的指標。
第二個引數用來設定執行緒屬性。
第三個引數是執行緒執行函式的位址。
最後乙個引數是執行函式的引數。
返回值
若成功則返回0,否則返回出錯編號
pthread_join
功能
函式pthread_join用來等待乙個執行緒的結束。
函式原型
extern int pthread_join __p (pthread_t __th, void **__thread_return);
第乙個引數為被等待的執行緒識別符號
第二個引數為乙個使用者定義的指標,它可以用來儲存被等待執行緒的返回值。
注意
這個函式是乙個執行緒阻塞的函式,呼叫它的函式將一直等待到被等待的執行緒結束為止,當函式返回時,被等待執行緒的資源被收回。如果執行成功,將返回0,如果失敗則返回乙個錯誤號。
這兩函式的標頭檔案為 #include,在編譯時需加上-lpthread引數,以呼叫靜態鏈結庫。因為pthread並非linux系統的預設庫。
#include #include #include #include#include #include #include static pthread_t id1,id2;
static char filepathlist[10][100];//存放檔案路徑
//qsort比較器
int cmp(const void *a, const void *b)
//執行緒1,排序0、2、4、6、8
void funone(int thread_num)
printf("\n");
fclose(fp);
qsort(t,i,sizeof(t[0]),cmp);//排序檔案內容
printf("thread %d 排序後%d檔案內容:\n",thread_num,index);
fp=fopen(filepathlist[index],"w");//覆寫
for(j=0; j0)
printf("\n");
fclose(fp);
qsort(t,i,sizeof(t[0]),cmp);//排序檔案內容
printf("thread %d 排序後%d檔案內容:\n",thread_num,index);
fp=fopen(filepathlist[index],"w");//覆寫
for(j=0; j首先需要10個要排序的檔案,程式執行後會將排序好的內容覆蓋掉原來的檔案內容
多執行緒併發執行下,每次列印的資訊不太一樣,但最終儲存到檔案的排序結果是一樣的 。
該程式用到了儲存路徑的全域性變數,而且每個執行緒處理的檔案沒有衝突,所以**裡不需要互斥鎖或條件變數來實現。
多執行緒 簡單的執行緒建立,C語言實現
執行緒,是計算機中最小的執行單元。通常,在window應用程式執行時,作業系統都會為其自動建立乙個執行緒,即主線程。通過主線程,可以建立多個執行緒或程序。使用多執行緒,可以提高程式的執行效率。執行緒建立函式createthread 屬於api函式 函式原型為 handle createthread ...
多執行緒 簡單的執行緒建立,C語言實現
執行緒,是計算機中最小的執行單元。通常,在window應用程式執行時,作業系統都會為其自動建立乙個執行緒,即主線程。通過主 執行緒,可以建立多個執行緒或程序。使用多執行緒,可以提高程式的執行效率。執行緒建立函式createthread 屬於api函式 函式原型為 handle createthrea...
Linux下C語言多執行緒例項
建立兩個執行緒訪問互斥資料,對其加1輸出。這是乙個多執行緒最常見的例子 include include include include define max 10 pthread t thread 2 pthread mutex t mut int number 0,i void thread1 p...