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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

std::jthread与std::thread的区别

發(fā)布時(shí)間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 std::jthread与std::thread的区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

特性上,std::jthread相比std::thread主要增加了以下兩個(gè)功能:

1.std::jthread對(duì)象被destruct時(shí),會(huì)自動(dòng)調(diào)用join,等待其所表示的執(zhí)行流結(jié)束。

2.支持外部請(qǐng)求中止(通過get_stop_source、get_stop_token和request_stop)。

為什么不是選擇往std::thread添加新接口,而是引入了一個(gè)新的標(biāo)準(zhǔn)庫(kù)?

因?yàn)閟td::jthread為了實(shí)現(xiàn)上述新功能,帶來(lái)了額外的性能開銷(主要是多了一個(gè)成員變量)。而根據(jù)C++一直以來(lái)“不為不使用的功能付費(fèi)”的設(shè)計(jì)哲學(xué),他們自然就把這些新功能拆出來(lái)新做了一個(gè)類。

// C++20新線程 jthread 體驗(yàn)代碼 // // 編譯(編譯本代碼,-pedantic 不是必須的): // g++ -std=c++20 -Wall -pedantic -pthread -static-libstdc++ C++20_jthread.cpp -o C++20_jthread // // 要求GCC10及以上版本, // 可使用GCC的Docker鏡像靜態(tài)鏈接stdc++庫(kù),以方便在非GCC10環(huán)境運(yùn)行。 // // docker pull gcc // docker run --rm -it -v /data:/data gcc #include <chrono> //#include <coroutine> // -fcoroutines #include <iostream> #include <stdexcept> #include <thread>// 線程執(zhí)行體 void thread_proc(std::stop_token st) {// 以往中,// 需要自己實(shí)現(xiàn) stop 來(lái)停止線程,// 現(xiàn)在 jthread 內(nèi)置了此能力。while (!st.stop_requested()) std::this_thread::sleep_for(std::chrono::seconds(1)); std::cout << "Thread " << std::this_thread::get_id() << " exit" << std::endl; }extern "C" int main() {std::jthread thr(&thread_proc); // 創(chuàng)建線程std::this_thread::sleep_for(std::chrono::seconds(10));thr.request_stop(); // 通知線程退出thr.join();return 0; }

第二個(gè)特征jthread是幫助我們解決std::thread以前導(dǎo)致的困境:join或detach*。現(xiàn)在jthread來(lái)承擔(dān)一些責(zé)任。它的析構(gòu)函數(shù)簡(jiǎn)單地實(shí)現(xiàn)為:

這正是我們?cè)谏厦娴氖纠兴龅?#xff0c;因此我們可以刪除那里的最后兩行,如下:

即main的最后,我們不用join了,jthread對(duì)象被析構(gòu)時(shí),會(huì)自動(dòng)調(diào)用join函數(shù)

總結(jié)

以上是生活随笔為你收集整理的std::jthread与std::thread的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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