C#中的std :: async vs async / await

时间:2011-03-31 10:54:26

标签: c# c++ asynchronous async-await

我想知道新的c ++功能std::async是否与两个C#关键字async / await相当,如果不是为什么?

2 个答案:

答案 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包装器(简单易用)