Linux 多執行緒程式設計入門

2021-04-13 09:03:49 字數 3429 閱讀 9150

建立執行緒:

intpthread_create(pthread_t *restrict thread,

const

pthread_attr_t *restrict attr,

void

*(*start_routine)(

void

*), 

void

*restrict arg);

引數:

thread

輸出執行緒id

attr 

執行緒屬性, 預設null

start_routine

執行緒執行函式

arg

執行緒執行引數

note:函式成功返回0 否則返回錯誤碼

標頭檔案 pthread.h

庫檔案 pthread

退出執行緒:

intpthread_exit(

void

* value_ptr);

引數:

value_ptr 

執行緒返回值指標

note: ptrhead_exit()退出呼叫此函式的執行緒並釋放該執行緒占用的資源

標頭檔案 pthread.h

庫檔案 pthread

等待指定執行緒結束:

intpthread_join(pthread_t thread,

void

**value_ptr);

引數:

thread

乙個有效的執行緒id

value_ptr 

接收執行緒返回值的指標

note:呼叫此函式的執行緒在指定的執行緒退出前將處於掛起狀態或出現錯誤而直接返回

如果value_ptr非null則value_ptr指向執行緒返回值的指標

函式成功後指定的執行緒使用的資源將被釋放

標頭檔案 pthread.h

庫檔案 pthread

獲取當前執行緒id:

pthread_t pthread_self(

void);

引數:

note:返回當前函式的id

標頭檔案 pthread.h

庫檔案 pthread

互斥:

說到多執行緒,最關心的就是資料訪問

/改變的同步問題。

windows

下有臨界區和訊號事件等手段來防止多個執行緒同時讀

/寫同乙個資料,那麼

linux呢?

多執行緒變成時多使用互斥

pthread_mutex_t

來起到防止同時訪問或改變同一資料.

建立互斥:

intpthread_mutex_init(pthread_mutex_t *restrict mutex,

const

pthread_mutexattr_t *restrict attr);

引數:

mutex

輸出互斥id

attr 

互斥屬性, 預設null

note:函式成功返回0 否則返回錯誤碼

標頭檔案 pthread.h

庫檔案 pthread

鎖住互斥:

intpthread_mutex_lock(pthread_mutex_t *mutex);

引數:

mutex

互斥id

note:如果指定的互斥id已經被鎖住那麼呼叫執行緒在互斥id完全解鎖前將

一直處於掛起狀態,否則將鎖住互斥體

標頭檔案 pthread.h

庫檔案 pthread

intpthread_mutex_trylock(pthread_mutex_t *mutex);

引數:

mutex

互斥id

note:如果指定的互斥id已經被鎖住那麼將直接返回乙個錯誤,通過判斷

此錯誤來進行不同的處理

標頭檔案 pthread.h

庫檔案 pthread

解鎖互斥:

intpthread_mutex_unlock(pthread_mutex_t *mutex);

引數:

mutex

互斥id

note:如果指定的互斥id已經被鎖住那麼對其解鎖

標頭檔案 pthread.h

庫檔案 pthread

釋放互斥:

intpthread_mutex_destroy(pthread_mutex_t *mutex);

引數:

mutex

互斥id

note:釋放指定的mutex占用的資源

標頭檔案 pthread.h

庫檔案 pthread

Linux多執行緒程式設計入門 2

執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。在上面的例子中,我們採用了執行緒的預設屬性,即為非分離狀態,這種情況下,原有的執行緒等待建立的執行緒結束。只有當 pthread join 函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。而分離執行緒不是這樣子的,它沒有被其他的執...

Linux多執行緒程式設計入門 3

3 條件變數 前一節中我們講述了如何使用互斥鎖來實現執行緒間資料的共享和通訊,互斥鎖乙個明顯的缺點是它只有兩種狀態 鎖定和非鎖定。而條件變數通過允許執行緒阻塞和等待另乙個執行緒傳送訊號的方法彌補了互斥鎖的不足,它常和互斥鎖一起使用。使用時,條件變數被用來阻塞乙個執行緒,當條件不滿足時,執行緒往往解開...

Linux 多執行緒程式設計入門 執行緒函式解釋

建立執行緒 intpthread create pthread t restrict thread,const pthread attr t restrict attr,void start routine void void restrict arg 引數 thread 輸出執行緒id attr ...