日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

【C/C++多线程编程之四】终止pthread线程

發(fā)布時(shí)間:2025/3/15 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C/C++多线程编程之四】终止pthread线程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

多線程編程之終止pthread線程

? ? ??Pthread POSIX threads 的簡(jiǎn)稱,是POSIX線程標(biāo)準(zhǔn)

? ? ? ? ? 終止線程似乎是多線程編程的最后一步,但絕不是本系列教材的結(jié)束。線程創(chuàng)建到線程終止,希望先給讀者一個(gè)關(guān)于多線程編程的整體認(rèn)識(shí)。

? ? ? ? ??1.終止Pthread線程:pthread_exit()

? ? ? ? ? 參數(shù):

? ? ? ? ? ret:地址指針,本質(zhì)上是返回值寫(xiě)入的地址。

? ? ? ? ? 終止線程是線程的主動(dòng)行為,一個(gè)線程調(diào)用pthread_exit,終止線程自身。線程終止會(huì)釋放線程特定數(shù)據(jù),線程特定數(shù)據(jù)為線程專(zhuān)有。由于線程共享全局?jǐn)?shù)據(jù),故線程退出不會(huì)釋放進(jìn)程的全局?jǐn)?shù)據(jù)。

? ? ? ? ?該函數(shù)返回值ret如何使用?返回值是調(diào)用的概念,那么只有在一個(gè)線程被另一個(gè)線程“調(diào)用”時(shí)返回值ret才起作用。這里“調(diào)用”不同于一般意義上的函數(shù)調(diào)用,一個(gè)線程等待一個(gè)線程可以理解為“調(diào)用”。如一個(gè)線程調(diào)用pthread_join等待另一個(gè)線程終止。下面介紹等待線程終止函數(shù)pthread_join

? ? ? ? ?2.等待線程終止:pthread_join()

? ? ? ? ?該返回值ret通過(guò)另一個(gè)函數(shù)pthread_join傳遞。等待線程終止pthread_join原型為:

等待線程終止pthread_join會(huì)阻塞調(diào)用線程,直到其指定的線程終止。pthread_join通過(guò)第一個(gè)參數(shù):線程ID來(lái)指定線程。調(diào)用者調(diào)用pthread_jion等待一個(gè)特定線程終止,在這種情況下,調(diào)用者可能需要這個(gè)特定線程的返回值,pthread_join通過(guò)將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,用于存儲(chǔ)線程ID

?

void* My_thread(void* args)

{??????????

for(int i = 0; i < 100; i++)

{

printf("I am your thread ,? my ID is?? %d\n",t1);

}

???

pthread_exit("I am over !");? //終止時(shí)返回"I am over !"

?

return NULL;

}

int main()

{

void* My_thread_ret;

???

pthread_create(&t1,NULL,My_thread,NULL);

?

pthread_join(t1,&My_thread_ret);

?

printf("\nmain主線程從My_thread子線程獲取的返回值:%s",(char *)My_thread_ret);

???

Sleep(1000000);

???

return 0;

}??????????

? ? ? ? ? ? ? ? ?上面的例子主線程main調(diào)用pthread_join等待子線程My_thread線程終止,通過(guò)傳遞My_thread_ret地址獲取子線程My_thread的返回值,最后在屏幕上輸出獲得的返回值。

?

來(lái)自 <https://blog.csdn.net/lovecodeless/article/details/23956975>

總結(jié)

以上是生活随笔為你收集整理的【C/C++多线程编程之四】终止pthread线程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。