C C 多執行緒程式設計之四 終止pthread執行緒

2021-08-21 19:36:57 字數 2568 閱讀 3188

多執行緒程式設計之終止pthread執行緒

pthreadposix threads的簡稱,是posix執行緒標準

終止執行緒似乎是多執行緒程式設計的最後一步,但絕不是本系列教材的結束。執行緒建立到執行緒終止,希望先給讀者乙個關於多執行緒程式設計的整體認識。

1.終止pthread執行緒:pthread_exit()

引數:

ret:位址指標,本質上是返回值寫入的位址。

終止執行緒是執行緒的主動行為,乙個執行緒呼叫pthread_exit,終止執行緒自身。執行緒終止會釋放執行緒特定資料,執行緒特定資料為執行緒專有。由於執行緒共享全域性資料,故執行緒退出不會釋放程序的全域性資料。

該函式返回值ret如何使用?返回值是呼叫的概念,那麼只有在乙個執行緒被另乙個執行緒「呼叫」時返回值ret才起作用。這裡「呼叫」不同於一般意義上的函式呼叫,乙個執行緒等待乙個執行緒可以理解為「呼叫」。如乙個執行緒呼叫pthread_join等待另乙個執行緒終止。下面介紹等待執行緒終止函式pthread_join。

2.等待執行緒終止:pthread_join()

該返回值ret通過另乙個函式pthread_join傳遞。等待執行緒終止pthread_join原型為:

等待執行緒終止pthread_join會阻塞呼叫執行緒,直到其指定的執行緒終止。pthread_join通過第乙個引數:執行緒id來指定執行緒。呼叫者呼叫pthread_jion等待乙個特定執行緒終止,在這種情況下,呼叫者可能需要這個特定執行緒的返回值,pthread_join通過將value_ptr的位址賦值給特定執行緒的pthread_exitret獲取返回值。

3.pthread_exipthread_join牛刀小試

#include "pthread.h"

#include "sched.h"

#include "semaphore.h"

#include "stdio.h"

#include "windows.h"

#pragma comment(lib, "pthreadvc2.lib")  //必須加上這句

pthread_t t1;                           //pthread_t變數t1,用於儲存執行緒id

void* my_thread(void* args)

pthread_exit("i am over !");  //終止時返回"i am over !"

return null; }

int main()

上面的例子主線程main呼叫pthread_join等待子執行緒my_thread執行緒終止,通過傳遞my_thread_ret位址獲取子執行緒my_thread的返回值,最後在螢幕上輸出獲得的返回值。

來自 <>

Linux多執行緒之執行緒終止

呼叫 return void var 呼叫void pthread exit void value ptr 其它執行緒可以呼叫 pthread join 獲得這個針。注 如果 thread 執行緒通過 return 返回,value ptr 所指向的單元裡存放的是 thread 執行緒函式的返回值。...

C 多執行緒程式設計之四

例程4 multithread4 該例程測試在windows下最多可建立執行緒的數目。建立乙個基於對話方塊的工程multithread4,在對話方塊idd multithread4 dialog中加入乙個按鈕idc test和乙個編輯框idc count,按鈕標題為 測試 編輯框屬性選中read o...

Python多執行緒之執行緒建立和終止

python主要是通過thread和threading這兩個模組來實現多執行緒支援。python的thread模組是比較底層的模組,python的threading模組是對thread做了一些封裝,可以更加方便的被使用。但是python cpython 由於gil的存在無法使用threading充分...