亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

std::async、std::promise、std::packaged_task會阻塞調用線程,異步還有什么意義?感激不盡

std::async、std::promise、std::packaged_task會阻塞調用線程,異步還有什么意義?感激不盡

Helenr 2019-06-21 16:09:46
C++11std::async、std::promise、std::packaged_task會阻塞調用線程,那么異步還有意義嗎?比如在UI的構造函數里面使用std::async、std::packaged_task預加載一些數據量大的信息,必須等信息加載完成,UI才會顯示。那么這里的異步還有什么意義?還不如直接把異步里面的代碼拿到調用線程中直接順序執行呢。
查看完整描述

2 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

std::async會返回一個std::future,只有在std::futrue析構的時候才會阻塞。你把這個future存在一個地方(比如類成員),不要讓它在構造結束的時候的時候析構就好了。
                            
查看完整回答
1 反對 回復 2019-06-21
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

比如在UI的構造函數里面使用std::async、std::packaged_task預加載一些數據量大的信息,必須等信息加載完成
想想看,如果這些數據能被并行加載呢?
比如下面這樣
future1=std::async;
future2=std::async;
...
futureN=std::async;
dosync;
future1.get;
do1;
future2.get;
do2;
...
futureN.get;
doN;
                            
查看完整回答
反對 回復 2019-06-21
  • 2 回答
  • 0 關注
  • 968 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號