標頭檔案:
#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.什麼是執行緒 執行緒是作業系統中能夠進行運算排程的最小單位,是程序中的實際運作單位。執行緒本身有乙個供程式執行時的堆疊,同類的多個 執行緒共享一塊記憶體空間。乙個執行緒的生存週期 新建狀態 就緒...
多執行緒基本概念
執行緒同步的真實意思和字面意思恰好相反。執行緒同步的真實意思,其實是 排隊 幾個執行緒之間要排隊,乙個乙個對共享資源進行操作,而不是同時進行操作。因此,關於執行緒同步,需要牢牢記住的第一點是 執行緒同步就是執行緒排隊。同步就是排隊。執行緒同步的目的就是避免執行緒 同步 執行。這可真是個無聊的繞口令。...