色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

async的兩個坑

汽車電子技術 ? 來源:程序喵大人 ? 作者:程序喵 ? 2023-02-21 14:01 ? 次閱讀

一般人可能都知道C++異步操作有async這個東西。但不知道大家是否注意過,其實它有兩個坑:

  1. 它不一定真的會異步執行
  2. 它有可能會阻塞

下面是async具體的介紹:

async是比future,packaged_task,promise更高級的東西,它是基于任務的異步操作。

通過async可以直接創建異步的任務,返回的結果會保存在future中,不需要像packaged_task和promise那么麻煩。

關于線程操作可以優先使用async,看一段使用代碼:

#include 
#include 
#include 
#include 


using namespace std;


int func(int in) { return in + 1; }


int main() {
    auto res = std::async(func, 5);
    // res.wait();
    cout << res.get() << endl;  // 阻塞直到函數返回
    return 0;
}

使用async異步執行函數是不是方便多啦。

async具體語法如下:

async(std::launch::async | std::launch::deferred, func, args...);

第一個參數是創建策略:

  • std::launch::async表示任務執行在另一線程
  • std::launch::deferred表示延遲執行任務,調用get或者wait時才會執行,不會創建線程,惰性執行在當前線程。

如果不明確指定創建策略,以上兩個都不是async的默認策略,而是undefined,它是一個基于任務的程序設計,內部有一個調度器(線程池),會根據實際情況決定采用哪種策略。

若從 std::async 獲得的 std::future 未被移動或綁定到引用,則在完整表達式結尾。

注意:std::future的析構函數將阻塞直至異步計算完成,實際上相當于同步操作:

std::async(std::launch::async, []{ f(); }); // 臨時量的析構函數等待 f()
std::async(std::launch::async, []{ g(); }); // f() 完成前不開始

注意:關于async啟動策略這里網上和各種書籍介紹的五花八門,這里會以cppreference為主。

有時候我們如果想真正執行異步操作可以對async進行封裝,強制使用std::launch::async策略來調用async。

template <typename F, typename... Args>
inline auto ReallyAsync(F&& f, Args&&... params) {
    return std::async(std::launch::async, std::forward(f), std::forward(params)...);
}

參考資料

https://en.cppreference.com/w/cpp/thread/async

打完收工。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 操作
    +關注

    關注

    0

    文章

    43

    瀏覽量

    18872
  • C++
    C++
    +關注

    關注

    22

    文章

    2108

    瀏覽量

    73623
收藏 人收藏

    評論

    相關推薦

    PCB板返修時的兩個關鍵工藝

    . 引言   對于成功返修SMT起幫助作用的兩個最關鍵工藝,也是兩個
    發表于 04-16 21:33 ?2102次閱讀

    兩個分機的對講電話

    兩個分機的對講電話
    發表于 05-01 01:07 ?1199次閱讀
    有<b class='flag-5'>兩個</b>分機的對講電話

    兩個可變零點、兩個固定極點的有源濾波器

    兩個可變零點、兩個固定極點的有源濾波器
    發表于 04-15 10:51 ?592次閱讀
    有<b class='flag-5'>兩個</b>可變零點、<b class='flag-5'>兩個</b>固定極點的有源濾波器

    兩個實用的串口調試助手

    電子發燒友網站提供《兩個實用的串口調試助手.zip》資料免費下載
    發表于 07-22 15:22 ?8次下載

    合并兩個排序的鏈表

    合并兩個排序的鏈表一、題目要求 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成后的鏈表,當然我們需要合成后的鏈表滿足單調不減規則。 二、我的思路 1、比較兩個鏈表的頭結點大小,哪個小就將其作
    發表于 01-16 22:02 ?584次閱讀

    如何測量兩個光源的相對強度?

    Q: 是否可以使用儀表放大器測量兩個光源之間的差異?A: 是的,用兩個光敏電阻替換儀表放大器的主設定電阻就可
    的頭像 發表于 02-03 12:45 ?5933次閱讀
    如何測量<b class='flag-5'>兩個</b>光源的相對強度?

    兩個電機的電路開源

    電子發燒友網站提供《兩個電機的電路開源.zip》資料免費下載
    發表于 08-03 11:20 ?1次下載
    <b class='flag-5'>兩個</b>電機的電路開源

    async-backtrace使用步驟

    使用 #[async_backtrace::framed] 標注一異步函數可用于追蹤,使用 taskdump_tree 以樹的形式輸出當前所有被追蹤的任務狀態
    的頭像 發表于 11-02 09:38 ?519次閱讀
    <b class='flag-5'>async</b>-backtrace使用步驟

    如何控制兩個電機直流

    電子發燒友網站提供《如何控制兩個電機直流.zip》資料免費下載
    發表于 11-21 14:35 ?0次下載
    如何控制<b class='flag-5'>兩個</b>電機直流

    在trait中使用 `async fn`

    在 trait 中使用?async fn async 工作組很高興地宣布?async fn?現在可以在 nightly 版本的 traits 中使用。在 playground 上有一
    的頭像 發表于 11-23 15:40 ?780次閱讀

    分享兩個STM32應用中的實戰案例

    今天在此分享兩個STM32應用中的實戰案例,權作提醒,以免重蹈覆轍。
    的頭像 發表于 01-11 09:13 ?3808次閱讀

    如何使用兩個LED和Arduino

    電子發燒友網站提供《如何使用兩個LED和Arduino.zip》資料免費下載
    發表于 01-30 11:28 ?1次下載
    如何使用<b class='flag-5'>兩個</b>LED和Arduino

    兩個LED和兩個按鈕的使用

    電子發燒友網站提供《兩個LED和兩個按鈕的使用.zip》資料免費下載
    發表于 01-30 16:04 ?1次下載
    <b class='flag-5'>兩個</b>LED和<b class='flag-5'>兩個</b>按鈕的使用

    如何判斷兩個鏈表是否相交,假設兩個鏈表都沒有環?

    首先,很多同學會存在一誤區,認為兩個鏈表相交應該這樣的。
    的頭像 發表于 08-08 17:08 ?1006次閱讀
    如何判斷<b class='flag-5'>兩個</b>鏈表是否相交,假設<b class='flag-5'>兩個</b>鏈表都沒有環?

    兩個硬盤2系統開機切換

    切換兩個硬盤上的系統是一種常見的行為,可以讓用戶在不同的操作系統之間進行切換,以滿足不同的需求。在本文中,我們將詳細介紹如何配置和使用兩個硬盤上的系統進行切換。本文將分為以下幾個部分進行討論:硬件
    的頭像 發表于 11-28 15:08 ?7769次閱讀
    主站蜘蛛池模板: 亚洲精品视频区| 欧美506070| 国产精品免费一区二区三区视频 | 国语自产一区视频| 嘟嘟嘟WWW免费高清在线中文| 91久久99久91天天拍拍| 在线亚洲色拍偷拍在线视频| 亚洲视频中文| 亚洲欧美日韩在线码不卡| 亚洲 欧美 另类 中文 在线| 宿舍BL 纯肉各种PLAY H| 人性本色联盟| 秋霞在线观看视频一区二区三区| 欧美成人momandson| 欧美18videosex性欧美老师| 男人边吃奶边摸边做刺激情话| 老师系列高H文| 麻花传媒XK在线观看| 毛片内射久久久一区| 美女被撕开胸罩狂揉大乳| 毛片网站网址| 女人会操出水图| 青青青青草原国产免费| 日韩欧美高清一区| 色久悠悠无码偷拍自怕| 乳色吐息在线观看全集免费观看 | 久久er国产免费精品| 激情内射亚洲一区二区三区爱妻| 国产在线高清视频| 九九电影伦理片| 妈妈的朋友6未删减版完整在线| 美女漏bb| 热久久视久久精品2015| 色窝窝亚洲AV在线观看| 亚欧乱亚欧乱色视频| 亚洲一区二区女搞男| 中文无码在线观| 99精品影院| 丰满的寡妇hd高清在线观看| 国产精品福利片| 黄色一级毛片免费|