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

C++ 并發(fā)編程 | future與async

這篇具有很好參考價值的文章主要介紹了C++ 并發(fā)編程 | future與async。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、async

1、定義

2、啟動策略

async函數(shù)接受兩種不同的啟動策略,這些策略在std::launch枚舉中定義,如下:

  • std::launch::defered:這種策略意味著任務(wù)將在調(diào)用future::get()future::wait函數(shù)時延遲執(zhí)行,也就是任務(wù)將在需要結(jié)果時同步執(zhí)行
  • std::launch::async:任務(wù)在單獨一個線程上異步執(zhí)行

默認(rèn)情況下async使用std::launch::defered | std::launch::async策略,這意味著任務(wù)可能異步執(zhí)行,也可能延遲執(zhí)行,具體取決于實現(xiàn),示例:

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

thread::id  test_async() {
	this_thread::sleep_for(chrono::milliseconds(500));
	return this_thread::get_id();
}

thread::id  test_async_deferred() {
	this_thread::sleep_for(chrono::milliseconds(500));
	return this_thread::get_id();
}

int main() {
    // 另起一個線程去運行test_async
	future<thread::id> ans = std::async(launch::async, test_async);
	// 還沒有運行test_async_deferred
	future<thread::id> ans_def = std::async(launch::deferred,test_async_deferred); //還沒有運行test_async_deferred

	cout << "main thread id = " << this_thread::get_id() << endl;
	// 如果test_async這時還未運行完,程序會阻塞在這里,直到test_async運行結(jié)束返回
	cout << "test_async thread id = " << ans.get() << endl;
	// 這時候才去調(diào)用test_async_deferred,程序會阻塞在這里,直到test_async_deferred運行返回
	cout << "test_async_deferred thread id =  = " << ans_def.get() << endl;

	return 0;
}

輸出結(jié)果

main thread id = 1
test_async thread id = 2
test_async_deferred thread id =  = 1

Process returned 0 (0x0)   execution time : 1.387 s
Press any key to continue.

從輸出結(jié)果可以看出采用std::launch::defered策略時任務(wù)是同步執(zhí)行,采用launch::async策略時任務(wù)是異步執(zhí)行。文章來源地址http://www.zghlxwxcb.cn/news/detail-820269.html

到了這里,關(guān)于C++ 并發(fā)編程 | future與async的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Java并發(fā)編程:Callable、Future和FutureTask

    在前面的文章中我們講述了創(chuàng)建線程的 2 種方式,一種是直接繼承 Thread ,另外一種就是實現(xiàn) Runnable 接口。 這 2 種方式都有一個缺陷就是:在執(zhí)行完任務(wù)之后無法獲取執(zhí)行結(jié)果。 如果需要獲取執(zhí)行結(jié)果,就必須通過共享變量或者使用線程通信的方式來達(dá)到效果,這樣使用起

    2024年02月13日
    瀏覽(25)
  • 并發(fā)編程 | 從Future到CompletableFuture - 簡化 Java 中的異步編程

    在并發(fā)編程中,我們經(jīng)常需要處理多線程的任務(wù),這些任務(wù)往往具有依賴性,異步性,且需要在所有任務(wù)完成后獲取結(jié)果。Java 8 引入了 CompletableFuture 類,它帶來了一種新的編程模式,讓我們能夠以函數(shù)式編程的方式處理并發(fā)任務(wù),顯著提升了代碼的可讀性和簡潔性。 在這篇

    2024年02月13日
    瀏覽(27)
  • 【C++11】future和async等

    【C++11】future和async等

    C++11的future和async等 std::async 和 std::future 是 C++11 引入的標(biāo)準(zhǔn)庫功能,用于實現(xiàn)異步編程,使得在多線程環(huán)境中更容易處理并行任務(wù)。它們可以幫助你在不同線程中執(zhí)行函數(shù),并且能夠方便地獲取函數(shù)的結(jié)果。 在之前使用線程的時候,我們沒有辦法很好的獲取到線程所執(zhí)

    2024年02月11日
    瀏覽(21)
  • C++ 多線程編程(三) 獲取線程的返回值——future

    C++ 多線程編程(三) 獲取線程的返回值——future

    C++11標(biāo)準(zhǔn)庫增加了獲取線程返回值的方法,頭文件為future,主要包括 future 、 promise 、 packaged_task 、 async 四個類。 那么,了解一下各個類的構(gòu)成以及功能。 future是一個模板類,它是傳輸線程返回值(也稱為 共享狀態(tài) )的媒介,也可以理解為線程返回的結(jié)果就安置在future中。

    2024年02月02日
    瀏覽(26)
  • C++并發(fā)編程 -3.同步并發(fā)操作

    C++并發(fā)編程 -3.同步并發(fā)操作

    本文介紹如何使用條件變量控制并發(fā)的同步操作、C++ 并發(fā)三劍客,函數(shù)式編程 1.概念 ????????C++條件變量(condition variable)是一種多線程編程中常用的同步機制,用于線程間的通信和協(xié)調(diào)。它允許一個或多個線程等待某個條件的發(fā)生,當(dāng)條件滿足時,線程被喚醒并繼續(xù)執(zhí)

    2024年02月22日
    瀏覽(21)
  • GO語言網(wǎng)絡(luò)編程(并發(fā)編程)并發(fā)介紹,Goroutine

    GO語言網(wǎng)絡(luò)編程(并發(fā)編程)并發(fā)介紹,Goroutine

    進程和線程 并發(fā)和并行 協(xié)程和線程 協(xié)程:獨立的??臻g,共享堆空間,調(diào)度由用戶自己控制,本質(zhì)上有點類似于用戶級線程,這些用戶級線程的調(diào)度也是自己實現(xiàn)的。 線程:一個線程上可以跑多個協(xié)程,協(xié)程是輕量級的線程。 goroutine 只是由官方實現(xiàn)的超級\\\"線程池\\\"。 每個

    2024年02月09日
    瀏覽(92)
  • 【C/C++】C語言開發(fā)者必讀:邁向C++的高效編程之旅

    【C/C++】C語言開發(fā)者必讀:邁向C++的高效編程之旅

    ?? 作者簡介 :阿里巴巴嵌入式技術(shù)專家,深耕嵌入式+人工智能領(lǐng)域,具備多年的嵌入式硬件產(chǎn)品研發(fā)管理經(jīng)驗。 ?? 博客介紹 :分享嵌入式開發(fā)領(lǐng)域的相關(guān)知識、經(jīng)驗、思考和感悟,歡迎關(guān)注。提供嵌入式方向的學(xué)習(xí)指導(dǎo)、簡歷面試輔導(dǎo)、技術(shù)架構(gòu)設(shè)計優(yōu)化、開發(fā)外包等

    2024年03月20日
    瀏覽(30)
  • 【Java并發(fā)】聊聊Future如何提升商品查詢速度

    【Java并發(fā)】聊聊Future如何提升商品查詢速度

    java中可以通過new thread、實現(xiàn)runnable來進行實現(xiàn)線程。但是唯一的缺點是沒有返回值、以及拋出異常,而callable就可以解決這個問題。通過配合使用futuretask來進行使用。 并且Future提供了對任務(wù)的操作,取消,查詢是否完成,獲取結(jié)果。 FutureTask核心代碼 基本屬性 任務(wù) 當(dāng)線程

    2024年01月25日
    瀏覽(16)
  • 《C++并發(fā)編程實戰(zhàn)》讀書筆記(3):并發(fā)操作的同步

    當(dāng)線程需要等待特定事件發(fā)生、或是某個條件成立時,可以使用條件變量 std::condition_variable ,它在標(biāo)準(zhǔn)庫頭文件 condition_variable 內(nèi)聲明。 wait() 會先在內(nèi)部調(diào)用lambda函數(shù)判斷條件是否成立,若條件成立則 wait() 返回,否則解鎖互斥并讓當(dāng)前線程進入等待狀態(tài)。當(dāng)其它線程調(diào)用

    2024年02月10日
    瀏覽(22)
  • c++并發(fā)編程實戰(zhàn)-第4章 并發(fā)操作的同步

    c++并發(fā)編程實戰(zhàn)-第4章 并發(fā)操作的同步

    想象一種情況:假設(shè)晚上坐車外出,如何才能確保不坐過站又能使自己最輕松? 這種方式存在雙重浪費: 線程 th1(wait_for_flag)須不斷查驗標(biāo)志,浪費原本有用的處理時間,這部分計算資源原本可以留給其他線程使用。 線程 th1(wait_for_flag)每次循環(huán)都需要給互斥上鎖,導(dǎo)致

    2024年02月08日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包