執行緒的基本概念和相關函式

2021-10-04 20:40:00 字數 2204 閱讀 3242

標頭檔案:

#include

函式原型:

pthread_t pthread_self

(void);

功能:獲得執行緒自身的id。

返回值:

pthread_t的型別為unsigned

long

int,所以在列印的時候要使用%lu方式

標頭檔案:

#include

函式原型:

intpthread_create

(pthread_t *thread,

const pthread_attr_t *attr,

void*(

*start_routine)

(void*)

,void

*arg)

;功能:

建立執行緒

引數:thread 指向執行緒識別符號(id)的指標。

attr 用來設定執行緒屬性,一般為null

start_routine 執行緒執行函式的起始位址。

arg 執行函式的引數。

返回值:

執行緒建立成功,則返回0。若執行緒建立失敗,則返回出錯編號,並且*thread中的內容是未定義的。

舉例:迴圈建立多個執行緒

#include

#include

#include

#include

void

*tfn

(void

*arg)

intmain

(int argc,

char

*ar**)

sleep

(n);

printf

("i am main, and i am not a process, i'm a thread!\n"

"main_thread_id = %lu\n"

,pthread_self()

);return0;

}

標頭檔案: 

#include

函式原型:

void

pthread_exit

(void

*retval)

;功能:

執行緒通過呼叫pthread_exit函式終止執行,就如同程序在結束時呼叫exit函式一樣。

注意:在main執行緒中呼叫pthread_exit會起到只讓main執行緒退出,但是保留程序資源,供其他由main建立的執行緒使用,直至所有執行緒都結束,但在其他執行緒中不會有這種效果

主線程、子執行緒呼叫exit, pthread_exit,互相產生的影響。

1、在主線程中,在main函式中return了或是呼叫了exit函式,則主程序退出,且整個程序也會終止,此時程序中的所有執行緒也將終止。因此要避免main函式過早結束。

2、在主線程中呼叫pthread_exit, 則僅僅是主線程結束,程序不會結束,程序內的其他執行緒也不會結束,直到所有執行緒結束,程序才會終止。

3、在任何乙個執行緒中呼叫exit函式都會導致程序結束。程序一旦結束,那麼程序中的所有執行緒都將結束。

標頭檔案:

#include

函式原型:

intpthread_join

(pthread_t thread,

void

**retval)

;功能:

pthread_join

()函式,以阻塞的方式等待thread指定的執行緒結束。當函式

返回時,被等待執行緒的資源被收回。如果執行緒已經結束,那麼該函式會立即返回。並且thread指定的執行緒必須是joinable的。

引數:thread: 執行緒識別符號,即執行緒id,標識唯一執行緒。

retval: 使用者定義的指標,用來儲存被等待執行緒的返回值。

返回值 :

0代表成功。 失敗,返回的則是錯誤號。

pthread_join一般是主線程來呼叫,用來等待子執行緒退出,因為是等待,所以是阻塞的,一般主線程會依次join所有它建立的子執行緒。

pthread_exit一般是子執行緒呼叫,用來結束當前執行緒。

子執行緒可以通過pthread_exit傳遞乙個返回值,而主線程通過pthread_join獲得該返回值,從而判斷該子執行緒的退出是正常還是異常。

多執行緒基本概念

什麼是程式 為了完成某項特定的任務,使用某種語言,編寫一組指令的集合 什麼是程序 是乙個正在進行的程式 什麼是執行緒 在乙個程序中,執行的一套功能流程,稱為執行緒 在乙個程序中,執行的多套功能流程,稱為多執行緒 多執行緒程式的優點 1 降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷毀造成...

多執行緒 基本概念

多執行緒和高併發是身為開發人員高階中一直是繞不開的話題,為此專門學習了下,做下總結,作為自己的備忘錄。1.什麼是執行緒 執行緒是作業系統中能夠進行運算排程的最小單位,是程序中的實際運作單位。執行緒本身有乙個供程式執行時的堆疊,同類的多個 執行緒共享一塊記憶體空間。乙個執行緒的生存週期 新建狀態 就緒...

多執行緒基本概念

執行緒同步的真實意思和字面意思恰好相反。執行緒同步的真實意思,其實是 排隊 幾個執行緒之間要排隊,乙個乙個對共享資源進行操作,而不是同時進行操作。因此,關於執行緒同步,需要牢牢記住的第一點是 執行緒同步就是執行緒排隊。同步就是排隊。執行緒同步的目的就是避免執行緒 同步 執行。這可真是個無聊的繞口令。...