呼叫 return (void*)var;
呼叫void pthread_exit(void *value_ptr), 其它執行緒可以呼叫 pthread_join 獲得這個針。
注:如果 thread 執行緒通過 return 返回, value_ptr 所指向的單元裡存放的是 thread 執行緒函式的返回值。
如果 thread 執行緒被別的執行緒呼叫 pthread_cancel 異常終止掉, value_ptr 所指向的單元裡存放的是常數 pthread_canceled 。
如果 thread 執行緒是自己呼叫 pthread_exit 終止的, value_ptr 所指向的單元存放的是傳給 pthread_exit 的引數。
如果對 thread 執行緒的終止狀態不感興趣,可以傳 null 給 value_ptr 引數。
#include
#include
#include
#include
typedef
struct
arg;
void
*th_fn1
(void
*arg)
void
*th_fn2
(void
*arg)
void
*th_fn3
(void
*arg)
}void
*th_fn4
(void
*arg)
intmain
(void);
pthread_create
(&tid,
null
,th_fn1,
null);
pthread_join
(tid,
&tret)
;printf
("thread 1 exit code %d\n",(
int)tret)
;pthread_create
(&tid,
null
,th_fn2,
null);
pthread_join
(tid,
&tret)
;printf
("thread 2 exit code %d\n",(
int)tret)
;//細節 指標輸出printf("%d\n",tret);即可輸出tret位址存放的值
pthread_create
(&tid,
null
,th_fn3,
null);
sleep(3
);pthread_cancel
(tid)
;pthread_join
(tid,
&tret)
;printf
("thread 3 exit code %d\n",(
int)tret)
;//當執行函式返回自定義指標(arg)時的情況
thread_create
(&tid,
null
,th_fn4,
(void*)
&r);
//細節傳自定義陣列
pthread_join
(tid,
(void**
)&tret)
;printf
("thread 4 exit code %d\n",(
(arg *
)tret)
->var1+
((arg*
)tret)
->var2)
;//強轉
return0;
}
thread 1 returning
thread 1 exit code 1
thread 2 returning
thread 2 exit code 2
thread 3 writing
thread 3 writing
thread 3 writing
thread 3 exit code -1
thread 1 returning
thread 4 exit code 30
Python多執行緒之執行緒建立和終止
python主要是通過thread和threading這兩個模組來實現多執行緒支援。python的thread模組是比較底層的模組,python的threading模組是對thread做了一些封裝,可以更加方便的被使用。但是python cpython 由於gil的存在無法使用threading充分...
C 多執行緒之旅 7 終止執行緒
先交代下背景,寫 c 多執行緒之旅 這個系列文章主要是因為以下幾個原因 1.多執行緒在c s和b s架構中用得是非常多的 2.而且多執行緒的使用是非常複雜的,如果沒有用好,容易造成很多問題。c 多執行緒之旅目錄 c 多執行緒之旅 1 介紹和基本概念 c 多執行緒之旅 2 建立和開始執行緒 c 多執行...
多執行緒 執行緒終止
stop 中止執行緒,並且清除監視器鎖的資訊,可能導致執行緒安全問題。destroy 從未實現過這個方法 public class demo thread.print public class stopthread extends thread catch interruptedexception ...