我想知道新的c ++功能std::async
是否与两个C#关键字async / await相当,如果不是为什么?
答案 0 :(得分:23)
不是,假设我正确地阅读this std::async documentation。
C#5的异步/等待功能涉及异步方法的复杂编译器转换,以便您可以编写看起来非常同步但具有异步点的代码。编译器为您构建状态机,创建适当的回调等。
编辑:虽然我之前认为std::async
只是强迫你明确地传递一个回调,但它看起来更像是原始的。无论哪种方式,我相信它主要/完全是库功能,而C#5的异步方法主要是具有库支持的语言功能。
编辑:正如评论中进一步指出的那样,looks like it's on its way for VC++ ......
答案 1 :(得分:1)
CPPASYNC(在另一个答案中提供)看起来像你在寻找什么。 “异步”部分很简单,性能看起来很好(可能比C#实现更好)。
这是丑陋的b / c你需要特殊的“等待”包装异步回调调用。提供了一些Boost网络,它们很容易制作,但你不能只是“等待”任何东西:
异步任何方法/功能,
在异步功能中,等待:
- 异步功能
- 围绕异步函数(需要回调)的await包装器(简单易用)