是否所有的c++编译器都支持async/await关键字?
Do all C++ compilers support the async/await keywords?
我想在c++ (UE4框架)中使用async/await
语法,但由于跨平台代码,我不确定这是可能的…或可能吗?如果可以,我如何使用它?
还有await
和__await
(resumable
, yield
和__yield_value
)关键字在Visual Studio中突出显示。的区别是什么?也许不是所有的编译器都支持这个关键字,或者单独支持?
gcc
, clang
都接受吗?或者不接受,我可以为每个平台单独使用宏。
async
和await
是由Microsoft提出的经过多次修订的语言扩展,但当前是N4134。这还没有被纳入标准。
这个提议遭到了许多人的反对,比如http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0158r0.html,因为它还没有完全成熟,也没有在TS中进行充分的探索,还有像N3985这样的竞争提议,它提出了可以在现有语言标准中实现的协程。
据我所知,唯一真正支持async/await的编译器是MS Visual Studio。
作为一个更新,clang 5.0支持当前的协同例程提案https://isocpp.org/files/papers/N4663.pdf草案,该提案现已被接受为TS,并且正在朝着c++ 20标准的方向发展。
相关文章:
- 为什么std::async使用同一个线程运行函数
- 为什么可以将左值传递给"std::async",即使它引用了右值
- 使用用户定义的参数调用future/async并调用类方法
- 使用 std::async 时死锁,将来作为成员
- 为什么我不能将引用作为 std::async 的函数参数传递
- std::async from std::async in windows xp
- Google Cloud Pubsub Async Streaming API in C++
- -fno-unwind-tables 和 -fno-async-unwind-tables 不起作用 NDK clang
- std::async 如何工作:为什么它会调用这么多次复制/移动?
- std::async 不会立即调用
- async中没有匹配的函数(模板中未解析的类型)
- std::async 如果线程是从 DLL 创建的,则会阻止进程退出?
- 使用 std::vector<std::future<int>> 和 std::async 启动几个线程时中止
- 在Visual Studio中,与std::async一起使用时不调用"thread_local"变量"析构函数,这是一个错误吗?
- 可能的 std::async 实现错误 Windows
- 为什么使用线程池时嵌套调用 boost::async 会阻塞?
- C++从 std::async 函数读取命名空间中的全局变量标志
- std::async 究竟是如何执行的?
- 使用 g++8 和 c++20 的 std::async 编译问题
- 是否所有的c++编译器都支持async/await关键字?