pthread_create

pthread_create

pthread_create是類Unix作業系統(Unix、Linux、Mac OS X等)的創建執行緒的函式。它的功能是創建執行緒(實際上就是確定調用該執行緒函式的入口點),線上程創建以後,就開始運行相關的執行緒函式。

pthread_create的返回值 表示成功,返回0;表示出錯,返回-1。

基本介紹

  • 中文名執行緒的函式
  • 外文名:pthread_create
  • 類型:作業系統
  • 編譯連結參數:pthread
函式簡介,頭檔案,函式聲明,編譯連結參數,返回值,參數,注意事項,示例,輸出執行緒標識符,簡單的執行緒程式,

函式簡介

頭檔案

#include<pthread.h>

函式聲明

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

編譯連結參數

-lpthread

返回值

若執行緒創建成功,則返回0。若執行緒創建失敗,則返回出錯編號,並且*thread中的內容是未定義的。
返回成功時,由tidp指向的記憶體單元被設定為新創建執行緒的執行緒ID。attr參數用於指定各種不同的執行緒屬性。新創建的執行緒從start_rtn函式的地址開始運行,該函式只有一個萬能指針參數arg,如果需要向start_rtn函式傳遞的參數不止一個,那么需要把這些參數放到一個結構中,然後把這個結構的地址作為arg的參數傳入。
linux下用C語言開發多執行緒程式,Linux系統下的多執行緒遵循POSIX執行緒接口,稱為pthread。

參數

第一個參數為指向執行緒標識符指針
第二個參數用來設定執行緒屬性。
第三個參數是執行緒運行函式的起始地址。
最後一個參數是運行函式的參數。

注意事項

因為pthread並非Linux系統的默認庫,而是POSIX執行緒庫。在Linux中將其作為一個庫來使用,因此加上 -lpthread(或-pthread)以顯式連結該庫。函式在執行錯誤時的錯誤信息將作為返回值返回,並不修改系統全局變數errno,當然也無法使用perror()列印錯誤信息。

示例

輸出執行緒標識符

#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <unistd.h>#include <string.h>void printids(const char *s){    pid_t pid;    pthread_t tid;    pid = getpid();    tid = pthread_self();    printf("%s pid %u tid %u (0x%x)\n", s, (unsigned int) pid,            (unsigned int) tid, (unsigned int) tid);}void *thr_fn(void *arg){    printids("new thread: ");    return NULL;}int main(void){    int err;    pthread_t ntid;    err = pthread_create(&ntid, NULL, thr_fn, NULL);    if (err != 0)        printf("can't create thread: %s\n", strerror(err));    printids("main thread:");    pthread_join(ntid,NULL);    return EXIT_SUCCESS;}

相關詞條

熱門詞條

聯絡我們