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