c++-coroutine相关内容

如何使类方法成为协程?

如何使类方法成为协程?这里有一个小例子。在这里,我试图从类方法创建协程,但编译器抛出以下错误: 错误:找不到此协程的承诺类型 52|std::载体vec=co_aWait等待函数1(); 如何正确设置方法的协程特征_特征? auto awaitable_func1() { struct Awaitable { std::vector ..
发布时间:2022-08-15 21:17:11 C/C++开发

co_await表达式中的c ++协程临时

我想知道如何将协程与通过引用捕获的临时协同等待是否有效.那么以下代码是否有效,我想编译器应该将临时变量和局部变量一样放在协程框架中: 任务g(const S&);任务f(){co_await g(S {});} 在clang和msvc( https://godbolt.org/z/HqHae8 )上,恢复g之后,无论在gcc上,临时文件似乎都被破坏了( https://godbolt.org ..
发布时间:2021-04-20 19:06:04 C/C++开发

为什么要在C / C ++中使用协程

此图片来自 setjmp和longjmp在C语言中的实际用法。 据我了解,协程是两个进程,它们看起来像是为 human 并行执行的,但实际上是为 machine 做单个进程。 >但是使用 setjmp & longjmp 我觉得很难阅读代码。如果需要写相同的一个。例如过程A& B,我将serval States 分配给将它们分为不同部分的过程, 依次执行: 进程A 切换(状态) ..
发布时间:2020-10-10 01:14:05 其他开发

C ++ 20协程的Lambda生命周期说明

愚蠢具有适用于C ++ 20的库 在自述文件中声称: 重要提示:您需要对于临时Lambda对象的生命周期要非常小心。调用lambda协程会返回folly :: coro :: Task,它捕获对lambda的引用,因此,如果未立即共等待返回的Task,则当临时lambda超出范围时,该任务将带有悬空引用。 / p> 我尝试为他们提供的示例制作MCVE,并对结果感到困惑。 假设以 ..
发布时间:2020-09-28 02:59:18 C/C++开发

无栈C ++ 20协程是否有问题?

基于以下内容,看来C ++ 20中的协程将是无堆栈的. https://en.cppreference.com/w/cpp/language/coroutines 我担心的原因有很多: 在嵌入式系统上,堆分配通常是不可接受的. 在低级代码中,co_await的嵌套很有用(我不相信无栈协程允许这样做). 对于无堆栈协程,只有顶层例程可以 暂停.该顶级例程调用的任何例程可能本 ..
发布时间:2020-09-13 06:10:17 C/C++开发