歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux下線程的創建和等待

  1. #include <stdio.h>   
  2. #include <unistd.h>   
  3. #include <stdlib.h>   
  4. #include <string.h>   
  5. #include <pthread.h>   
  6. char message[]="hello world ";  
  7. void *thread_function(void *arg)//線程函數   
  8. {  
  9.    printf("thread_function is running, Argument is %s\n",(char *)arg);  
  10.    sleep(3);  
  11.    strcpy(message,"Bye!");  
  12.    pthread_exit("Thank you for the cpu time");//www.linuxidc.com注意線程退出函數   
  13. }  
  14.   
  15. int main()  
  16. {  
  17.   int res;  
  18.   pthread_t a_thread; //新線程的標識符   
  19.   void *thread_result;//定義一個線程返回值   
  20.   res=pthread_create(&a_thread,NULL,thread_function,(void *)message);//創建線程   
  21.   if(res!=0)//線程創建不成功   
  22.     {  
  23.      perror("Thread create error!");  
  24.      exit(EXIT_FAILURE);  
  25.     }  
  26.   printf("waiting for thread to finish...\n");  
  27.   res=pthread_join(a_thread,&thread_result);//等待新線程結束   
  28.   if(res!=0)  
  29.    {  
  30.      perror("Thread join error!");  
  31.      exit(EXIT_FAILURE);  
  32.     }  
  33.   printf("Thread joined , it returned %s\n",(char *)thread_result);  
  34.   printf("Message is now %s\n",message);  
  35.   exit(EXIT_SUCCESS);  
  36. }  

注意,多線程的編譯和普通程序的編譯是不一樣的,要用這樣的命令: 【cc -D_REENTRANT thread.c -g -o thread -lpthread】

大家可以看到,全局變量message經過線程創建函數傳遞給線程函數後由【hello world】變成了【Bye!】

  1. res=pthread_join(a_thread,&thread_result);//等待新線程結束  
等待新線程結束,只有新線程結束後才會向下執行。
Copyright © Linux教程網 All Rights Reserved