11 POSIX多執行緒技術

2021-10-06 09:38:24 字數 1777 閱讀 2504

什麼是執行緒

fork和建立新執行緒的區別

執行緒的優點

執行緒的缺點

執行緒函式庫

執行緒識別符號

int

pthread_create

(pthread_t *thread,

pthread_attr_t *attr,

void*(

*start_routine)

(void*)

,void

*arg)

;

"void* (start_routine)(void) "表示需要我們傳遞的乙個函式位址,該函式以乙個指向void的指標為引數,返回的也是乙個指向void的指標。

呼叫成功時返回值是「0」,如果失敗則返回乙個錯誤。

void pthread_exit (

void

*retbal)

;

int

pthread_join

(pthread_t th,

void

**thread_return)

;

建立乙個執行緒預設的狀態是joinable,如果乙個可結合執行緒結束執行但沒有被join,則它的狀態類似於程序中的zombie process,即還有一部分資源沒有被**,所以建立執行緒者應該呼叫pthread_join來等待執行緒執行結束,並可得到執行緒的退出**,**其資源。

#include

#include

#include

#include

#include

char message=

"hello world"

;void

*thread_function

(void

*arg)

intmain()

printf

("waiting for thread to finish..\n");

void

*thread_result;

res =

pthread_join

(a_thread,

&thread_result);if

(res !=0)

printf

("thread joined, it returned %s\n",(

char

*)thread_result)

;printf

("message is now %s\n"

,message)

;exit

(exit_success)

;return0;

}

pthread_detach示例

#include

#include

#include

void

*print_message

(void

*ptr)

intmain

(int argc,

char

*ar**)

return0;

}

POSIX執行緒多執行緒例子

include include include include define num threads 6 void thread function void arg int main sleep 1 printf waiting for threads to finish.n for lots of...

posix多執行緒 互斥量

1.互斥量初始化兩種方式 1 靜態初始化 include typedef struct my struct tag my struct t my struct t data int main int argc,char argv 2 動態初始化 include typedef struct my s...

posix多執行緒 條件變數

條件變數是用來通知共享資料狀態資訊的。1.條件變數初始化兩種方式 1 靜態初始化 pthread cond t cond pthread cond initializer 示例如下 include typedef struct my struct tag my struct t my struct ...