執行緒的銷毀 分離屬性

2022-04-12 06:36:29 字數 1983 閱讀 8444

執行緒結束,缺少pthread_join 的話,資源並不會真正釋放,設定執行緒分離屬性,則可不需要join 都可以釋放資源。

例項:#include 

#include 

#include 

#include 

#include 

pthread_t pid_new_job;  

courseinfo nextcourseinfo;

#define id_size 48+1 

struct courseinfo

};void *thread_handlespace(void *args)

int main(void)

res = pthread_attr_setscope(&attr, pthread_scope_system);//

建立執行緒的爭用範圍(pthread_scope_system 或 pthread_scope_process)。 使用 pthread_scope_system 時,此執行緒將與系統中的所有執行緒進行競爭。使用 pthread_scope_process 時,此執行緒將與程序中的其他執行緒進行競爭

res += pthread_attr_setdetachstate(&attr, pthread_create_detached);

if(res != 0)

res = pthread_create(&pid_new_job, null, thread_handlespace, (void *) &nextcourseinfo);//全域性的nextcourseinfo,為了防止銷毀了該變數(此前在這的sleep 可以不用)

//pthread_join(pid_new_job,null);

//無需此句了。

pthread_attr_destroy(&attr);

return0;}

dengwei@dengwei-laptop:/media/dengwei/blog$ free

total       used       free     shared    buffers     cached

mem:        984680     847920     136760          0      53784     351384

-/+ buffers/cache:     442752     541928

swap:      1354744          0    1354744

dengwei@dengwei-laptop:/media/dengwei/blog$ ./ci &

.... 

dengwei@dengwei-laptop:/media/dengwei/blog$ free

total       used       free     shared    buffers     cached

mem:        984680

848536

136144

053800

351436

-/+ buffers/cache:     443300

541380

swap:      1354744

01354744

[1]+  done                    ./ci

dengwei@dengwei-laptop:/media/dengwei/blog$ free

total       used       free     shared    buffers     cached

mem:        984680

848612

136068

053808

351468

-/+ buffers/cache:     443336

541344

swap:      1354744

01354744

for more about attribute of thread: 

linux 多執行緒的分離和可鏈結屬性

include common.h 這種情況一般用於某個多執行緒呼叫的模組使用前的初始化,但是無法判定哪個執行緒先執行,從而不知道把初始化 放在哪個執行緒合適的問題。當然,我們一般的做法是把初始化函式放在main裡,建立執行緒之前來完成,但是如果我們的程式最終不是做成可執行程式,而是編譯成庫的形式,那...

執行緒的分離狀態

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

執行緒的分離狀態

執行緒的分離狀態決定乙個執行緒以什麼樣的方式來終止自己。執行緒的預設屬性,一般是非分離狀態,這種情況下,原有的執行緒等待建立的執行緒結束。只有當pthread join 函式返回時,建立的執行緒才算終止,才能釋放自己占用的系統資源。而分離執行緒沒有被其他的執行緒所等待,自己執行結束了,執行緒也就終止...