国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++之C++11 thread線程示例(一百三十八)

這篇具有很好參考價值的文章主要介紹了C++之C++11 thread線程示例(一百三十八)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡介: CSDN博客專家,專注Android/Linux系統(tǒng),分享多mic語音方案、音視頻、編解碼等技術(shù),與大家一起成長!

優(yōu)質(zhì)專欄:Audio工程師進(jìn)階系列原創(chuàng)干貨持續(xù)更新中……】??

人生格言: 人生從來沒有捷徑,只有行動才是治療恐懼和懶惰的唯一良藥.

更多原創(chuàng),歡迎關(guān)注:Android系統(tǒng)攻城獅

C++之C++11 thread線程示例(一百三十八)

1.前言

本篇目的:介紹C++11 thread線程用法

2.C++11 thread創(chuàng)建傳參線程

<1>. t1.join(): 主進(jìn)程等待任務(wù)線程示例

#include <iostream>
#include <thread>
#include <unistd.h> 
using namespace std;

void task_01(){  
  printf("xxx------->%s(), line = %d\n",__FUNCTION__,__LINE__);  
} 

void task_02(int i){  
  printf("xxx------->%s(), line = %d\n",__FUNCTION__,__LINE__);  
  while(i < 1000)
    i++;
  printf("xxx------->%s(), line = %d, i = %d\n",__FUNCTION__,__LINE__,i);
}
int main(){
  int i = 0, j = 0;

  //1.任務(wù)線程不帶參數(shù)
   thread t1(task_01);
   
  //2.任務(wù)線程帶參數(shù)
  thread t2(task_02, i);
  //t1.detach();//線程與進(jìn)程分離,各自執(zhí)行,順序是混換的.
  
  t1.join();//主進(jìn)程等待線程執(zhí)行結(jié)束,然后主進(jìn)程開始執(zhí)行.
  printf("xxx------->%s(), line = %d\n",__FUNCTION__,__LINE__);
  return 0;
}

打印:
xxx------->task_01(), line = 7
xxx------->task_01(), line = 10, i = 1000
xxx------->main(), line = 20

在thread中創(chuàng)建一個任務(wù)線程task_01(),并將參數(shù)i = 1傳進(jìn)去; 然后 t1.join();
通過打印看出,主進(jìn)程會等待線程執(zhí)行完畢,才開始執(zhí)行.

<2>. t1.detach(): 主進(jìn)程和任務(wù)線程分離示例

#include <iostream>
#include <thread>
#include <unistd.h> 
using namespace std;
 
void task_01(int i){  
  printf("xxx------->%s(), line = %d\n",__FUNCTION__,__LINE__);  
  while(i < 1000)
    i++;
  printf("xxx------->%s(), line = %d, i = %d\n",__FUNCTION__,__LINE__,i);
}
int main(){
  int i = 0, j = 0;

  //1.任務(wù)線程.
  thread t1(task_01, i);
  t1.detach();//線程與進(jìn)程分離,各自執(zhí)行,順序是混換的.
  
  //t1.join();//主進(jìn)程等待線程執(zhí)行結(jié)束,然后主進(jìn)程開始執(zhí)行.
  printf("xxx------->%s(), line = %d\n",__FUNCTION__,__LINE__);
  return 0;
}

打印
xxx------->main(), line = 20

在thread中創(chuàng)建一個任務(wù)線程task_01(),并將參數(shù)i = 1傳進(jìn)去; 然后 t1.detach();
通過打印看出,主進(jìn)程和任務(wù)線程各自執(zhí)行,結(jié)果是主進(jìn)程執(zhí)行完了,任務(wù)線程沒來的及執(zhí)行;
也有可能,任務(wù)線程執(zhí)行完了,主進(jìn)程還沒來得及執(zhí)行,這種情況都有可能.文章來源地址http://www.zghlxwxcb.cn/news/detail-414416.html

<3>.線程傳遞對象引用

#include<iostream>
#include<thread>
using namespace std;

class A {
public:
  int num;
  A(){};
};

void test(A& a) {
  a.num = 199;
  cout << "a.num = " << a.num << endl;
}

int main() {
  A a;
  a.num = 10;
  thread th(test, std::ref(a));

  th.join();
  cout << "a.num = " << a.num << endl;
  return 0;
}

<4>.線程傳遞指針對象

#include<iostream>
#include<thread>
using namespace std;

class A {
public:
  int num;
  A(){};
};

void test(A* a) {
  a->num = 199;
  cout << "a.num = " << a->num << endl;
}

int main() {
  A *a = new A();
  a->num = 10;
  //thread th(test, std::ref(a));
  thread th(test, a);

  th.join();
  cout << "a.num = " << a->num << endl;
  return 0;
}

<5>.線程傳遞this指針

#include<iostream>
#include<thread>
using namespace std;

class A {
public:
  int num;
  A(){};
  void print();
};


void test(A* a) {
  a->num = 199;
  cout << "a.num = " << a->num << endl;
}

void A::print(){
  thread th(test, this);
  th.join();
  cout << "a.num = " << this->num << endl;
}

int main() {
  A *a = new A();
  a->num = 10;
  a->print();

  return 0;
}

<6>.thread線程lambda表達(dá)式用法

/***********************************************************
* Author        : 公眾號: Android系統(tǒng)攻城獅
* Create time   : 2023-07-28 22:06:42 星期五
* Filename      : thread_lambda_05.cpp
* Description   :
************************************************************/

#include <iostream>
#include <thread>
#include <chrono>
#include <atomic>
#include <mutex>
#include <thread>
int main(){
  std::mutex mutex;
  std::thread thread = std::thread([&]() {
    std::lock_guard<decltype(mutex)> lock(mutex);
    for (int i=10; i>0; --i) {
      std::cout << i << std::endl;
      std::this_thread::sleep_for (std::chrono::seconds(1));
    }
  });
  thread.join();
  return 0;
}

到了這里,關(guān)于C++之C++11 thread線程示例(一百三十八)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • PCL點(diǎn)云處理之pcd文件的讀寫(詳細(xì)注釋版)(一百三十三)

    `處理點(diǎn)云數(shù)據(jù)的第一步總是把點(diǎn)云從不同格式的文件讀取到自己的程序里, 存儲點(diǎn)云信息的文件包括但不限于pcd,las,ply,txt等等,由于我們用的是PCL庫進(jìn)行點(diǎn)云處理,所以最適合的還是pcd格式的點(diǎn)云文件,所以有必要學(xué)習(xí)如何從pcd文件中讀取點(diǎn)云的信息:如坐標(biāo)等,以及如何

    2023年04月18日
    瀏覽(21)
  • C/C++基礎(chǔ)講解(一百三十一)之經(jīng)典篇(信息合并/平均分?jǐn)?shù)存儲)

    很多時候,特別是剛步入大學(xué)的學(xué)子們,對于剛剛開展的計(jì)算機(jī)課程基本上是一團(tuán)迷霧,想要弄明白其中的奧秘,真的要花費(fèi)一些功夫,我和大家一樣都是這么啃過來的,從不知到知知,懵懂到入門,每一步都走的很艱辛,課程上,大學(xué)老師基本上講解上機(jī)實(shí)操得時間特別有

    2024年02月07日
    瀏覽(22)
  • 架構(gòu)設(shè)計(jì)內(nèi)容分享(一百三十三):ES+Redis+MySQL高可用,如何試實(shí)現(xiàn)?

    架構(gòu)設(shè)計(jì)內(nèi)容分享(一百三十三):ES+Redis+MySQL高可用,如何試實(shí)現(xiàn)?

    目錄 背景: ES 高可用方案: ES 雙中心主備集群架構(gòu) ES 流量隔離三集群架構(gòu) ES 集群深度優(yōu)化提升 會員 Redis 緩存方案: ES 近一秒延時導(dǎo)致的 Redis 緩存數(shù)據(jù)不一致問題的解決方案 Redis 雙中心多集群架構(gòu) 高可用會員主庫方案: MySQL 雙中心 Partition 集群方案 會員主庫平滑遷移方

    2024年02月22日
    瀏覽(15)
  • Linux圖形管理框架gdm3、lightdm、sddm、kdm介紹(一百三十七)

    1.Gnome系列圖形管理器:gdm、gdm3 Ubuntu默認(rèn)界面管理器:gdm3 2.KDE系列圖形管理器:KDM,SDDM LUbuntu默認(rèn)界面管理器:sddm 3.Canonical公司系列圖形管理器:Lightdm XUbuntu默認(rèn)界面管理器:lightdm 查看當(dāng)前使用的顯示管理器?

    2024年02月12日
    瀏覽(18)
  • 一百三十三、Hive——Hive外部表加載含有JSON格式字段的CSV文件數(shù)據(jù)

    一百三十三、Hive——Hive外部表加載含有JSON格式字段的CSV文件數(shù)據(jù)

    在Hive的ODS層建外部表,然后加載HDFS中的CSV文件數(shù)據(jù) 注意 :CSV文件中含有未解析的JSON格式的字段數(shù)據(jù),并且JSON字段中還有逗號 JSON數(shù)據(jù)的字段track_data只顯示一部分?jǐn)?shù)據(jù),因?yàn)镴SON格式數(shù)據(jù)里面也含有逗號 [{\\\"id\\\":\\\"14\\\",\\\"length\\\":5.0,\\\"height\\\":3.0,\\\"posX\\\":63.0,\\\"posY\\\":37.0,\\\"acs\\\":99.0,\\\"angle\\\":83.0,\\\"alti

    2024年02月16日
    瀏覽(22)
  • 【C++入門到精通】 線程庫 | thread類 C++11 [ C++入門 ]

    【C++入門到精通】 線程庫 | thread類 C++11 [ C++入門 ]

    當(dāng)討論現(xiàn)代編程語言的特性時,C++11無疑是一個不容忽視的里程碑。在前一篇文章中,我們深入探討了Lambda表達(dá)式在C++11中的引入和應(yīng)用。本文將繼續(xù)探索C++11的強(qiáng)大功能,具體而言,我們這篇文章將聚焦于線程庫和其中的thread類。 線程在多任務(wù)處理中起著至關(guān)重要的作用,它

    2024年02月04日
    瀏覽(15)
  • 【從零開始學(xué)習(xí)JAVA | 第三十八篇】應(yīng)用多線程

    【從零開始學(xué)習(xí)JAVA | 第三十八篇】應(yīng)用多線程

    目錄 前言: 多線程的實(shí)現(xiàn)方式: Thread常見的成員方法: 總結(jié): ? ? ? ? ? ?多線程的引入不僅僅是提高計(jì)算機(jī)處理能力的技術(shù)手段,更是適應(yīng)當(dāng)前時代對效率和性能要求的必然選擇。在本文中,我們將深入探討多線程的應(yīng)用和實(shí)踐,幫助讀者更好地理解和應(yīng)用多線程技術(shù),

    2024年02月13日
    瀏覽(109)
  • C++11多線程—thread

    C++11多線程—thread

    ? 目錄 1.thread類 2.線程函數(shù)參數(shù) 3.原子性操作庫(atomic) 4.lock_guard與unique_lock 4.1mutex的種類 4.2lock_guard 4.3unique_lock 5.condition_variable ????????在C++11之前,涉及到多線程問題,都是和平臺相關(guān)的,比如windows和linux下各有自己的接 口,這使得代碼的可移植性比較差。C++11中最重要

    2023年04月16日
    瀏覽(15)
  • 第二百三十二回 如何通過相機(jī)獲取圖片文件

    第二百三十二回 如何通過相機(jī)獲取圖片文件

    我們在上一章回中介紹了\\\"如何混合選擇多個圖片和視頻文件\\\"相關(guān)的內(nèi)容,本章回中將介紹 如何通過相機(jī)獲取圖片文件 .閑話休提,讓我們一起Talk Flutter吧。 我們在前面章回中介紹的選擇圖片或者視頻文件的方式都是通過文件窗口進(jìn)行的,本章回中將介紹如何通過相機(jī)獲取圖

    2024年02月20日
    瀏覽(21)
  • 【C++】多線程(thread)使用詳解

    【C++】多線程(thread)使用詳解

    多線程(multithreading),是指在軟件或者硬件上實(shí)現(xiàn)多個線程并發(fā)執(zhí)行的技術(shù)。具有多核CPU的支持的計(jì)算機(jī)能夠真正在同一時間執(zhí)行多個程序片段,進(jìn)而提升程序的處理性能。在一個程序中,這些獨(dú)立運(yùn)行的程序片段被稱為“ 線程 ”(Thread),利用其編程的概念就叫作“多線

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包