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

 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 (),获取状态以便处理

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

尹成

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

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

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

打赏作者

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

抵扣说明:

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

余额充值