Linux下主線程和子執行緒的終止次序

2021-10-08 06:34:58 字數 687 閱讀 1728

之前在完成乙個任務時需要實現主線程和子執行緒分別處理自己的任務,為了驗證子執行緒的功能正常,需要讓主線程在子執行緒之前結束,同時程序仍在執行。為了實現這種情況,特地了解主線程和子執行緒終止次序的相關之前。

#include #include #include #include #include void *func(void *arg) 

int main(void)

//結果:先列印descendant thread,後列印main thread。

#include #include #include #include #include void *func(void *arg) 

int main(void)

//結果:此時會只列印main thread,然後程序結束。由於程序退出,該程序中的所有執行緒都會終止,系統**所有的資源,因此子執行緒還沒來得列印就已經退出了。

#include #include #include #include #include void *func(void *arg) 

int main(void)

//結果:主程序列印main thread後退出,子程序並沒有退出,列印descendant thread後退出。最後程序退出,該程序中的所有執行緒都會終止,系統**所有的資源。

主線程和子執行緒

子執行緒通過 handlerthread的thread.getlooper 繫結,在主線程的handler的handlermessage中呼叫threadhandler.sendmessagedelay msg,1000 向子執行緒傳送訊息。在子執行緒中通過handler.sendmessagede...

主線程和子執行緒

主線程負責管理由它建立的子執行緒,建立 啟動 掛起 停止等。主線程通過發訊息的方式管理子執行緒,例如,給子執行緒傳送start 訊息,子執行緒啟動,子執行緒執行入口的run 方法。thread有下面兩個構造方法 thread runnable target,string name thread ru...

主線程和子執行緒總結

執行結果 從上面可以看到 如果主線程和子執行緒是並行的,雖然都是用while 1 但是倚靠 cpu的排程,主線程和子執行緒都有機會得到執行。如果要在子執行緒裡面改變主線程裡面的資料,就在 pthread create 裡面的最後 乙個引數使用傳位址呼叫 void c,否則使用傳值呼叫 void c ...