程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 多線程(零):入門——一個最簡單的多線程程序

多線程(零):入門——一個最簡單的多線程程序

編輯:C++入門知識

[cpp]  #include <stdio.h>  
#include <pthread.h>  
 
void thread(void) { 
    int i; 
    printf("This is a thread.\n"); 
    pthread_exit(NULL); 

 
int main(void) { 
    pthread_t id; 
    int ret; 
    ret = pthread_create(&id, NULL, (void *)thread, NULL); 
    if(ret != 0) { 
        printf("Create pthread error!\n"); 
        exit(1); 
    } 
    int i; 
    printf("This is the main process.\n"); 
    pthread_join(id, NULL); 
    return 0; 

#include <stdio.h>
#include <pthread.h>

void thread(void) {
 int i;
 printf("This is a thread.\n");
 pthread_exit(NULL);
}

int main(void) {
 pthread_t id;
 int ret;
 ret = pthread_create(&id, NULL, (void *)thread, NULL);
 if(ret != 0) {
  printf("Create pthread error!\n");
  exit(1);
 }
 int i;
 printf("This is the main process.\n");
 pthread_join(id, NULL);
 return 0;
}
函數說明:


int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);


此函數接受四個參數,分別為指向線程標識符的指針、線程屬性、線程運行函數的起始地址、運行函數的參數。第二個和第四個參數暫時都為NULL,以後也許會修改。

若此函數執行成功,則返回0,否則返回錯誤編號。

pthread_t用於聲明線程id。

int pthread_join(pthread_t thread, void **retval);

此函數以阻塞的方式等待thread指定的線程結束。當函數返回時,被等待線程的資源被收回。如果進程已經結束,那麼該函數會立即返回。在這裡的意思是主函數在等待線程都結束後才退出,如果不加這個函數的話,主函數執行完自己的代碼程序就終止了,不在乎線程是否也執行結束。

第一個參數為線程ID,標識唯一線程。第二個參數為用戶定義的指針,用來存儲被等待線程的返回值。

若此函數執行成功,則返回0。否則返回錯誤編號。

 


注:編譯時要加上-lpthread,如果允許使用gdb調試的話,還要加上-g

gcc -o homework1 homework1.c -lpthread

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved