读书人

【Windows8开发】异步编程进阶篇之 cr

发布时间: 2012-09-25 09:55:59 作者: rapoo

【Windows8开发】异步编程进阶篇之 create_async, create_task, make_task区别与联系
create_async, create_task, make_task都是WinRT下为异步编程服务的API,它们之间有何联系,又有何区别呢?
create_async是为跨语言调用服务的,也就是说如果希望封装的方法可以被C++以外语言的组件调用,那就需要create_async来创建异步处理,那除了这点外,它与create_task在实际应用中还有什么区别与联系呢?首先是返回值。create_async基于跨语言的考虑返回4种支持个语言平台间通用的异步处理接口:1. Windows::Foundation::IAsyncAction : 无返回值,无处理进度报告
2. Windows::Foundation::IAsyncActionWithProgress<TProgress>:无返回值,有处理进度报告
3. Windows::Foundation::IAsyncOperation<TResult>:有返回值,无处理进度报告
4. Windows::Foundation::IAsyncOperationWithProgress<TResult, TProgress>:有返回值,有处理进度报告
而create_task则返回Concurrency::task<TRESULT>对象,看如下示例:

// Create a task group that serves as the root of the tree.structured_task_group tgroup;// Create a child task.auto task1 = make_task([&] {    // TODO: Perform work here.});// Create a child task.auto task2 = make_task([&] {    // TODO: Perform work here.});// Run the child tasks and wait for them to finish.tgroup.run(task1);tgroup.run(task2);tgroup.wait();

在后续介绍任务组的部分会再详细说明make_task,这里只是简单提一下,知道它跟create_task完全不是一回事就可以了,

读书人网 >编程

热点推荐