Linux多執行緒之執行緒終止

2021-10-02 22:01:23 字數 2165 閱讀 1039

呼叫 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 ...