1. 程式人生 > 其它 >【Linux環境】建立一個簡單多執行緒程式

【Linux環境】建立一個簡單多執行緒程式


先沾程式碼,沒時間了,抽時間把理論補上。




原始碼如下:
#include <stdio.h> #include <pthread.h> /* 定義執行緒要執行的函式,p_arg為接收執行緒傳遞過來的資料 */ void *Thread1_fuc(void *p_arg) { printf("我執行緒1在執行找豆豆操作\n"); return "我執行緒1執行成功了哦\n"; } void *Thread2_fuc(void *p_arg) { printf("我執行緒2在執行打豆豆操作\n"); return "我執行緒2執行成功了哦\n"; }
int main() { int res = 0; pthread_t mythread1,mythread2; void *p_thread_result = NULL; /* 1.建立一個執行緒, &mythread1:要建立的執行緒 NULL:不修改新建執行緒的任何屬性 ThreadFun:新建的執行緒要執行的動作 NULL:不傳遞給ThreadFun()函式任何引數 res:返回值,res為0表示建立執行緒成功了,否則代表建立失敗 */ res = pthread_create(&mythread1, NULL, Thread1_fuc, NULL);
if (0 != res) { printf("建立執行緒1失敗\n"); return 0; } res = pthread_create(&mythread2, NULL, Thread2_fuc, NULL); if (0 != res) { printf("建立執行緒2失敗\n"); return 0; } /* 2.等待指定執行緒執行完畢 mythread:指定等待的執行緒; &p_thread_result:接收ThreadFun()函式的返回值, 或者接收pthread_exit()函式指定的值 返回值res為0表示函式執行成功,反之則執行失敗
*/ res = pthread_join(mythread1, &p_thread_result); //輸出執行緒執行完畢後返回的資料 printf("%s\n", (char*)p_thread_result); res = pthread_join(mythread2, &p_thread_result); //輸出執行緒執行完畢後返回的資料 printf("%s\n", (char*)p_thread_result); printf("主執行緒執行結束\n"); return 0; } /* 注意: 1. 編譯命令:gcc c_thread_1.c -o hello -lpthread (命令中要加-plthread引數,否則會導致程式連線失敗) 編譯程式包括 預編譯, 編譯,彙編,連結,包含標頭檔案了,僅能說明有了執行緒函式的宣告, 但是還沒有實現, 加上-lpthread是在連結階段,連結這個庫。用-phtread也行,並且建議,向後相容。 */