首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是大头肌呢?

什么是大头肌呢?
EN

Stack Overflow用户
提问于 2020-07-27 20:49:30
回答 1查看 366关注 0票数 3

C++20标准在[coroutine.noop]中定义了一个"noop“。那是什么?它和身体是{ co_return; }的函数有什么不同?

更新

感谢您对提案和标准的链接。综上所述,"noop“是resume() (或operator())和destroy()方法没有副作用的一种。

但是destroy()总是在用户写的协同线上(我想!)有一个副作用,即破坏协同,并进一步调用协同处理方法,包括resume()destroy(),现在将是未定义的行为,这不同于无副作用行为。

总之,没有办法编写这样的协同线,使destroy()没有副作用,而且只有库提供的noop具有此属性,对吗?

(欢迎对我问题的最新答复作出答复。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-27 21:01:04

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

基本上,我们的想法是

有了这样一个协同处理,库编写器就可以根据运行时的考虑执行对称或非对称控制传输。

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

代码语言:javascript
复制
struct Awaiter {
   ...
   auto await_suspend(coroutine_handle<> h) {
     ...
     return cond ? next_coro : noop_coroutine(); 
   }
 };

这并不一定与手写的noop coroutine不同,但是已经为您预先定义了一个是非常方便的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63123373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档