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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux+c+线程的属性,C ++中的多线程

發(fā)布時間:2025/3/12 linux 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux+c+线程的属性,C ++中的多线程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

多線程是多任務(wù)的一種特殊形式,多任務(wù)是一種功能,它使您的計算機可以同時運行兩個或多個程序。通常,多任務(wù)有兩種類型:基于進(jìn)程和基于線程。

基于進(jìn)程的多任務(wù)處理程序的并發(fā)執(zhí)行。基于線程的多任務(wù)處理并發(fā)執(zhí)行同一程序的各個部分。

多線程程序包含兩個或多個可以同時運行的部分。這種程序的每個部分都稱為一個線程,并且每個線程都定義了單獨的執(zhí)行路徑。

C ++不包含對多線程應(yīng)用程序的任何內(nèi)置支持。相反,它完全依賴于操作系統(tǒng)來提供此功能。

本教程假定您正在Linux OS上工作,并且我們將使用POSIX編寫多線程C ++程序。POSIX線程或Pthread提供了許多類似Unix的POSIX系統(tǒng)(例如FreeBSD,NetBSD,GNU / Linux,Mac OS X和Solaris)上可用的API。

以下例程用于創(chuàng)建POSIX線程-#include?

pthread_create?(thread,?attr,?start_routine,?arg)

在這里,pthread_create創(chuàng)建一個新線程并使其可執(zhí)行。可以在代碼中的任何位置多次調(diào)用此例程。這是參數(shù)的說明。參數(shù)描述線子例程返回的新線程的不透明唯一標(biāo)識符。

屬性一個不透明的屬性對象,可用于設(shè)置線程屬性。您可以指定線程屬性對象,或?qū)ULL指定為默認(rèn)值。

start_routine創(chuàng)建線程后將執(zhí)行的C ++例程

精氨酸可以傳遞給start_routine的單個參數(shù)。它必須通過引用作為void類型的指針轉(zhuǎn)換傳遞。如果不傳遞任何參數(shù),則可以使用NULL。

進(jìn)程可以創(chuàng)建的最大線程數(shù)取決于實現(xiàn)。一旦創(chuàng)建,線程就是對等的,并且可以創(chuàng)建其他線程。線程之間沒有隱含的層次結(jié)構(gòu)或依賴性。

終止線程

我們使用以下例程來終止POSIX線程–#include?

pthread_exit?(status)

在這里,pthread_exit用于顯式退出線程。通常,pthread_exit()例程在線程完成其工作之后被調(diào)用,并且不再需要存在。

如果main()在創(chuàng)建線程之前完成,并以pthread_exit()退出,則其他線程將繼續(xù)執(zhí)行。否則,它們將在main()完成時自動終止。

示例#include?

#include?

#include?

using?namespace?std;

#define?NUM_THREADS?5

void?*PrintHello(void?*threadid)?{

long?tid;

tid?=?(long)threadid;

cout?<

pthread_exit(NULL);

}

int?main?()?{

pthread_t?threads[NUM_THREADS];

int?rc;

int?i;

for(?i?=?0;?i?

cout?<

rc?=?pthread_create(&threads[i],?NULL,?PrintHello,?(void?*)i);

if?(rc)?{

cout?<

exit(-1);

}

}

pthread_exit(NULL);

}

輸出結(jié)果$gcc?test.cpp?-lpthread

$./a.out

main()?:?creating?thread,?0

main()?:?creating?thread,?1

main()?:?creating?thread,?2

main()?:?creating?thread,?3

main()?:?creating?thread,?4

Hello?World!?Thread?ID,?0

Hello?World!?Thread?ID,?1

Hello?World!?Thread?ID,?2

Hello?World!?Thread?ID,?3

Hello?World!?Thread?ID,?4

總結(jié)

以上是生活随笔為你收集整理的Linux+c+线程的属性,C ++中的多线程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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