日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
[ModernC++]現(xiàn)代C++中的異步操作

背景

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、網(wǎng)站建設(shè)、南江網(wǎng)絡(luò)推廣、微信小程序開發(fā)、南江網(wǎng)絡(luò)營銷、南江企業(yè)策劃、南江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供南江建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

老實說,C++11中對異步的支持不必Python和JavaScript弱。

實現(xiàn)(代碼)

 
 
  1. #include  
  2. #include  
  3. #include  
  4. #include  
  5.  
  6. template  
  7. int parallel_sum(RAIter front, RAIter beg, RAIter end) 
  8.     auto len = end - beg; 
  9.     if (len < 1000) 
  10.     { 
  11.         char out[50]; 
  12.         sprintf(out, "Calculate from %d to %d\n", beg - front, end - front); 
  13.         std::cout << out; 
  14.         return std::accumulate(beg, end, 0); 
  15.     } 
  16.  
  17.     RAIter mid = beg + len / 2; 
  18.     auto handle_right = std::async(std::launch::async, 
  19.                              parallel_sum, front, mid, end); 
  20.     auto handle_left = std::async(std::launch::async, 
  21.                              parallel_sum, front, beg, mid); 
  22.     return handle_left.get() + handle_right.get(); 
  23.  
  24. int main() 
  25.     std::vector v(20000, 1); 
  26.     std::cout << "The sum is " << parallel_sum(v.begin(), v.begin(), v.end()) << '\n'; 

輸出

可能一

 
 
  1. Calculate from 8125 to 8750                                                                                                                
  2. Calculate from 18125 to 18750                                                                                                              
  3. Calculate from 10625 to 11250                                                                                                              
  4. Calculate from 2500 to 3125                                                                                                                
  5. Calculate from 13750 to 14375                                                                                                              
  6. Calculate from 5000 to 5625                                                                                                                
  7. Calculate from 1250 to 1875                                                                                                                
  8. Calculate from 3750 to 4375                                                                                                                
  9. Calculate from 16250 to 16875                                                                                                              
  10. Calculate from 17500 to 18125                                                                                                              
  11. Calculate from 10000 to 10625                                                                                                              
  12. Calculate from 625 to 1250                                                                                                                 
  13. Calculate from 18750 to 19375                                                                                                              
  14. Calculate from 15625 to 16250                                                                                                              
  15. Calculate from 3125 to 3750                                                                                                                
  16. Calculate from 12500 to 13125                                                                                                              
  17. The sum is 20000  

可能二

 
 
  1. Calculate from 1875 to 2500 
  2. Calculate from 3750 to 4375  
  3. Calculate from 8750 to 9375  
  4. Calculate from 7500 to 8125  
  5. Calculate from 15000 to 15625  
  6. Calculate from 10000 to 10625  
  7. Calculate from 1250 to 1875  
  8. Calculate from 6875 to 7500  
  9. Calculate from 0 to 625 
  10. Calculate from 3125 to 3750  
  11. Calculate from 5625 to 6250  
  12. Calculate from 5000 to 5625  
  13. Calculate from 6250 to 6875  
  14. Calculate from 2500 to 3125  
  15. The sum is 20000 

可能.........

注意

如果在輸出中間信息的時候不先現(xiàn)在字符串里輸出會很亂,因為同一行cout輸出不同項的操作不是原子的,中間可能會轉(zhuǎn)到其他線程去。


分享題目:[ModernC++]現(xiàn)代C++中的異步操作
本文地址:http://www.5511xx.com/article/dpjoipd.html