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

C++并發(fā)編程學(xué)習(xí)01——hello concurrent world

這篇具有很好參考價(jià)值的文章主要介紹了C++并發(fā)編程學(xué)習(xí)01——hello concurrent world。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

經(jīng)典用例

#include <iostream>
#include <thread>

void hello()
{
    std::cout << "hello concurrent world" << std::endl;
}

int main()
{
    std::thread t(hello);
    t.join();
}

編譯

g++ -g test.cpp -o out -lpthread

gdb調(diào)試文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-664954.html

(gdb) r
Starting program: /usr1/code/ch1/out 
Missing separate debuginfos, use: zypper install glibc-debuginfo-2.22-100.15.4.x86_64
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7ffff6f79700 (LWP 17902)]
hello concurrent world
[Thread 0x7ffff6f79700 (LWP 17902) exited]
[Inferior 1 (process 17898) exited normally]
Missing separate debuginfos, use: zypper install libgcc_s1-debuginfo-8.2.1+r264010-1.3.3.x86_64 libstdc++6-debuginfo-8.2.1+r264010-1.3.3.x86_64
(gdb) c
The program is not being run.
(gdb) info threads 
No threads.
(gdb) b dm_01_01.cpp:11
Breakpoint 1 at 0x400d53: file dm_01_01.cpp, line 11.
(gdb) r
Starting program: /usr1/code/ch1/out 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Breakpoint 1, main () at dm_01_01.cpp:11
11          std::thread t(hello);
(gdb) n
[New Thread 0x7ffff6f79700 (LWP 18588)]
hello concurrent world
[Thread 0x7ffff6f79700 (LWP 18588) exited]
12          t.join();
(gdb) info threads 
  Id   Target Id                               Frame 
* 1    Thread 0x7ffff7fda740 (LWP 18504) "out" main () at dm_01_01.cpp:12
(gdb) d
Delete all breakpoints? (y or n) y
(gdb) b dm_01_01.cpp:6
Breakpoint 2 at 0x400d2b: file dm_01_01.cpp, line 6.
(gdb) c
Continuing.
[Inferior 1 (process 18504) exited normally]
(gdb) r
Starting program: /usr1/code/ch1/out 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7ffff6f79700 (LWP 18896)]
[Switching to Thread 0x7ffff6f79700 (LWP 18896)]

Thread 2 "out" hit Breakpoint 2, hello () at dm_01_01.cpp:6
6           std::cout << "hello concurrent world" << std::endl;
(gdb) info threads 
  Id   Target Id                               Frame 
  1    Thread 0x7ffff7fda740 (LWP 18895) "out" 0x00007ffff7bc7a0d in pthread_join ()
   from /lib64/libpthread.so.0
* 2    Thread 0x7ffff6f79700 (LWP 18896) "out" hello () at dm_01_01.cpp:6
(gdb) c
Continuing.
hello concurrent world
[Thread 0x7ffff6f79700 (LWP 18896) exited]
[Inferior 1 (process 18895) exited normally]
(gdb) q

代碼中注意點(diǎn)

  • 管理線程的函數(shù)和類在<thread>中聲明,而保護(hù)共享數(shù)據(jù)的函數(shù)和類在其他
    頭文件中聲明
  • 每個(gè)線程都必須具有一個(gè)初始函數(shù)(initial function),新線程的執(zhí)行從這個(gè)函數(shù)開(kāi)始。對(duì)于應(yīng)用程序來(lái)說(shuō),初始線程是main(),但是對(duì)于其他線程,可以在 std::thread 對(duì)象的構(gòu)造函數(shù)中指定——本例中,被命名為 t 的 std::thread 對(duì)象使用新函數(shù) hello()作為其初始函數(shù)。
  • 與直接寫入標(biāo)準(zhǔn)輸出或是從 main()調(diào)用 hello()不同,該程序啟動(dòng)了一個(gè)新的線程來(lái)實(shí)現(xiàn),使線程數(shù)量增加到兩個(gè)——初始線程始于 main(),而新線程始于hello()
  • 新的線程啟動(dòng)后,初始線程繼續(xù)執(zhí)行。如果它不等待新線程結(jié)束,它就將繼續(xù)運(yùn)行到main()的結(jié)尾,從而結(jié)束程序——這有可能發(fā)生在新線程運(yùn)行之前。這就是為什么在這里調(diào)用 join()的原因,這會(huì)使得調(diào)用線程(在 main()中)等待與 std::thread
    對(duì)象相關(guān)聯(lián)的線程,即這個(gè)例子中的 t。

到了這里,關(guān)于C++并發(fā)編程學(xué)習(xí)01——hello concurrent world的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Linux shell編程學(xué)習(xí)筆記14:編寫和運(yùn)行第一個(gè)shell腳本hello world!

    Linux shell編程學(xué)習(xí)筆記14:編寫和運(yùn)行第一個(gè)shell腳本hello world!

    ?* 20231020?寫這篇博文斷斷續(xù)續(xù)花了好幾天,為了說(shuō)明不同shell在執(zhí)行同一腳本文件時(shí)的差別,我分別在csdn提供線上Linux環(huán)境 (使用的shell是zsh)和自己的電腦上(使用的shell是bash)做測(cè)試。功夫不負(fù)有心人,在其中一些實(shí)例中可以體現(xiàn)出zsh和bash的對(duì)腳本文件支持的差別,收

    2024年02月07日
    瀏覽(28)
  • 【01】一步一步命令行輸出VC hello world

    【01】一步一步命令行輸出VC hello world

    VS2022的安裝程序下載地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 。下載完成之后點(diǎn)擊程序會(huì)進(jìn)入到選擇安裝VS2022組件的安裝程序,選擇你需要的安裝組件就好,如果只需要C++的程序就僅安裝C++就好了。 這樣會(huì)輕便很多。 我安裝好的目錄結(jié)構(gòu)如下圖: 編寫一個(gè)最簡(jiǎn)單的C++

    2024年02月05日
    瀏覽(24)
  • AutoCAD二次開(kāi)發(fā)系列教程01-如何在AutoCAD中輸出Hello World

    AutoCAD二次開(kāi)發(fā)系列教程01-如何在AutoCAD中輸出Hello World

    A.開(kāi)發(fā)使用的軟件:AutoCAD2016、VisualStudio2022 B.建立依賴的本地庫(kù)(提前從AutoCAD軟件安裝目錄拷貝開(kāi)發(fā)時(shí)需要使用的庫(kù),如:accoremgd.dll) C.創(chuàng)建新的類庫(kù)(.Net Framework),注意不同AutoCAD版本對(duì)應(yīng)不同F(xiàn)ramework版本,當(dāng)前案例使用AutoCAD2016對(duì)應(yīng)Framework4.5.2 D.建立類文件,創(chuàng)建命令函數(shù),使用

    2024年02月02日
    瀏覽(20)
  • 自學(xué)WEB后端01-安裝Express+Node.js框架完成Hello World!

    自學(xué)WEB后端01-安裝Express+Node.js框架完成Hello World!

    前端 ? ? ? ? 前端開(kāi)發(fā)主要涉及用戶界面(UI)和用戶體驗(yàn)(UX),負(fù)責(zé)實(shí)現(xiàn)網(wǎng)站的外觀和交互邏輯。前端開(kāi)發(fā)使用HTML、CSS和JavaScript等技術(shù)來(lái)構(gòu)建網(wǎng)頁(yè),并通過(guò)各種工具和框架(如React、Vue.js、Angular等)來(lái)簡(jiǎn)化開(kāi)發(fā)過(guò)程。前端開(kāi)發(fā)關(guān)注于網(wǎng)頁(yè)設(shè)計(jì)、布局、樣式、動(dòng)畫效果以及

    2024年02月07日
    瀏覽(18)
  • 【C++】“Hello World!“

    【C++】“Hello World!“

    ?? 個(gè)人主頁(yè) :修修修也 ?? 所屬專欄 :C++ ?? 操作環(huán)境 : Visual Studio 2022 ? 紀(jì)念一下自己編寫的 第一個(gè)C++程序 運(yùn)行結(jié)果: ? 1. include :包含。 #include 是一個(gè)預(yù)處理命令,用來(lái)引入頭文件。 2. iostream :iostream是一個(gè) 標(biāo)準(zhǔn)庫(kù) ,它與C語(yǔ)言的stdio庫(kù)不同,它從一開(kāi)始就是 用多重繼承與虛

    2024年01月19日
    瀏覽(26)
  • linux c編程之“hello world”一

    linux c編程之“hello world”一

    [注]:環(huán)境說(shuō)明: OS:CentOS 7 GCC: 4.8.5 其他環(huán)境下的結(jié)果可能不盡相同。 聲明:本文是我的一點(diǎn)點(diǎn)經(jīng)驗(yàn)總結(jié),文中可能有理解不到位甚至是錯(cuò)誤的,肯請(qǐng)大家多多批評(píng),多提意見(jiàn)。 注:這篇總結(jié)寫于兩三年前,雖刪改數(shù)次,但考慮到自己才疏學(xué)淺,實(shí)不敢“毀”人不倦,貽

    2024年02月10日
    瀏覽(22)
  • C++輸出Hello,World

    在 C 語(yǔ)言中輸出 \\\"Hello, World\\\" 可以使用下面的代碼: #include stdio.h int main() { printf(\\\"Hello, Worldn\\\"); return 0; } 代碼的意思是:首先使用 #include stdio.h 告訴編譯器我們要使用輸入/輸出函數(shù),然后定義一個(gè)名為 main 的函數(shù),在函數(shù)中使用 printf 函數(shù)來(lái)輸出字符串 \\\"Hello, World\\\",最后使用

    2024年02月07日
    瀏覽(20)
  • C++打印hello world

    首先我們要知道: C++中有一個(gè)很重要的東西,那就是面向?qū)ο螅渲?,C++中的打印和輸入都是一個(gè)對(duì)象,而不是像C一樣是一個(gè)函數(shù),所以打印和輸入都有一定的區(qū)別 打印是C++最基礎(chǔ)的東西,下面我們先放代碼,再逐條分析 首先是程序的入口:主函數(shù)。他先對(duì)于C有一定的區(qū)別

    2024年02月02日
    瀏覽(25)
  • C++感受6-Hello World 交互版

    C++感受6-Hello World 交互版

    變量、常量 輸入、輸出、流 getline() 函數(shù)讀入整行輸入 Hello() 函數(shù)復(fù)習(xí) 新定義函數(shù) Input() 實(shí)現(xiàn)友好的人機(jī)交互 還有 “痘痘” 為什么擠不到的分析…… ? 上一節(jié)課,我們寫了兩版“問(wèn)候”程序。第一版的最大問(wèn)題是重復(fù)的內(nèi)容比較多,每一次問(wèn)候都在重復(fù)從 cout 到 endl 的代

    2024年04月27日
    瀏覽(26)
  • <C++>快來(lái)精通C++的“Hello world“寫法

    <C++>快來(lái)精通C++的“Hello world“寫法

    C語(yǔ)言是結(jié)構(gòu)化和模塊化的語(yǔ)言,適合處理較小規(guī)模的程序。對(duì)于復(fù)雜的問(wèn)題,規(guī)模較大的程序,需要高度的抽象和建模時(shí),C語(yǔ)言則不合適。 為了解決軟件危機(jī), 20世紀(jì)80年代, 計(jì)算機(jī)界提出了 OOP(objectoriented programming:面向?qū)ο?思想 ,支持面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言應(yīng)運(yùn)而生

    2024年02月04日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包