gpt4 book ai didi

c++ - 什么是 noop 协程?

转载 作者:行者123 更新时间:2023-12-01 14:37:09 25 4
gpt4 key购买 nike

C++20 标准在 [coroutine.noop] 中定义了一个“noop 协程” .它是什么?它与主体为 { co_return; 的函数有何不同? }?

更新

感谢您提供提案和标准的链接。从这些引用资料中总结,“noop 协程”是 resume()(或 operator())和 destroy()方法没有副作用。

但是用户编写的协程上的 destroy() 总是(我认为!)有副作用,即破坏协程并进一步调用协程句柄方法,包括 resume() destroy() 现在将是未定义的行为,这与无副作用行为不同。

总而言之,没有办法编写协程使得 destroy() 没有副作用,只有库提供的 noop 协程才有这个属性,对吗?

(欢迎更新答案,以回应我问题的这次更新。)

最佳答案

这是在这里提出的:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0913r1.html

基本上,这个想法是

Having such a coroutine handle allows library writer to perform eithersymmetric or asymmetric control transfer based on runtimeconsiderations.

以下代码说明了这个想法(来自同一个提案):

struct Awaiter {
...
auto await_suspend(coroutine_handle<> h) {
...
return cond ? next_coro : noop_coroutine();
}
};

这与手写的 noop 协程不一定不同,但有一个已经为您预定义的协程非常方便。

关于c++ - 什么是 noop 协程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63123373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com