Visual Studio 11开发指南(19)C++11更新-并行模式库和代理库

本文介绍了Visual Studio 11中C++11的并行模式库和代理库,重点讲解了task类型、then()方法以及并行算法如parallel_for、parallel_sort的应用。通过示例展示了如何提升性能,如在40,000,000个整数排序中,parallel_sort相对于std::sort的性能优势。还提到了parallel_reduce用于并行减少操作,以及parallel_transformation算法。建议开发者尝试Visual Studio 11以提升并行编程效率。" 133343746,20015583,使用JavaScript实现HTML代码实时预览,"['javascript', 'html', '开发工具']
摘要由CSDN通过智能技术生成
 Visual Studio 11,具备 并行模式库代理库、 更轻松地开发多核处理器上运行的并行代码。

这些库的主要范例是根据任务 和并发运行库,自定义的调度程序 进行处理的。

 

到目前为止,处理任务的的概念原型,就使用task_handle ●类型 如下所示:

 

1.task_group task;    
 2.    int i=0;    
 3.    auto  t1=make_task([&i]()
 4.        {
 5.            
 6.            i=42;
 7.        });
 8.    int z=0;
 9.    auto t2=make_task([&z]()
 10.        {
 11.            
 12.            z=42;
 13.        });
 14. 
 15.    task.run_and_wait (t1);    
 16.    task.run_and_wait (t2);    
 17.    std::wcout << i+z << std::endl;
 18.    std::wcout << "Fini" << std::endl;


 

 

这里计算的 i + z 是必须得到的 lambda 表达式中引用变量 。然后这两个任务并行完成它们的工作。

使用 Visual Studio 11,可以直接使用的task类型的概念,如下所示:

1.task<int> t1=task<int>([]()->int
 2.        {
 3.            return 42;
 4.        });
 5.    
 6.    task<int> t2=task<int>([]()->int
 7.        {
 8.            return 42;
 9.        });
 10.    
 11.    std::wcout << t1.get() +t2.get () << std::endl;


 

为了简化语法,更需要为每项任务捕获变量的引用,要通过调用方法wait()的每个任务并返回值角色的方法get (),获取状态以便处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值