多執行緒程式設計之終止pthread執行緒
pthread是posix 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_exit的ret獲取返回值。
3.pthread_exi與pthread_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充分...