最终挂起后协程的状态

2024-02-13

协程具有初始挂起点和最终挂起点。 Acoroutine_handle is done https://en.cppreference.com/w/cpp/coroutine/coroutine_handle/done当它在最终暂停点暂停时。然而,这种暂停是通过co_await promise.final_suspend()。这个函数可以返回std::never_suspend或类似的等待。

那么...然后会发生什么呢?coroutine_handle::resume如果协程在最后一个暂停点暂停,则会产生 UB,但是如果您past最后的暂停点?

据推测,协程不被视为暂停,因此resume根据该规则是 UB https://en.cppreference.com/w/cpp/coroutine/coroutine_handle/resume。但是,您可以使用超过最终挂起点的协程句柄做什么呢?

或者说,拥有你的东西根本没有任何意义final_suspend返回除std::suspend_always?


协程函数是通过对协程主体的转换来定义的。协程主体完成并退出后(通过co_return或者跑出块的末尾),会发生以下代码:

co_await p.final_suspend();
//destruct promise p
//destruct parameters in coroutine frame
//destroy coroutine state

Where p是协程的 Promise 对象。因此,如果final_suspend不会导致暂停co_await,promise 被销毁,接下来是协程框架的参数,最后是协程状态对象本身。

coroutine_handle引用协程状态。如果它已被销毁,则该句柄不会引用挂起的协程(因为有no协程)。和resume因此将会有未定义的行为。done如果句柄未挂起(因为它不是句柄),则类似地具有 UB。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最终挂起后协程的状态 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • Magento SOAP v1 与 v2 性能对比

    我正在使用 VB NET 来处理 Magento API 我成功地使用了 SOAP v1 直到遇到需要关联数组的调用 经过一天左右的运气不佳后 我决定尝试 v2 它拥有我需要的所有对象 v2 可以工作 但是非常非常慢 要更新一个库存商品库存
  • SQL 查询以获取主管层次结构列表。员工-->主管-->主管

    我有两个表 员工 和 部门 该图像显示了每个员工的经理 我想编写一个 SQL 查询 为我提供所有主管 经理 经理的经理 的列表 我只想要一个列 在给定特定员工时显示主管列表 例如 如果我给员工 id 202 那么我应该收到 200 130
  • 如何查询位于不同数据库中的表?

    我最初的问题是关于是否将 ASPNETDB MDF 与应用程序数据库分开 或者将所有表合并到一个数据库中 检查之前的问题 答案 我了解到这取决于会员数据是否会在多个应用程序之间共享 现在 我的问题是这样的 如果我决定将 ASPNETDB M
  • MinGW的ld无法对非PE输出文件执行PE操作

    我知道还有一些其他类似的问题 无论是否是 StackOverflow 我为此进行了很多研究 但仍然没有找到单一的解决方案 我正在做一个操作系统作为一个业余项目 我一直在汇编中完成所有工作 但现在我想加入 C 代码 为了测试 我制作了这个汇编
  • 如何基于 Func 将 IObservable 窗口/缓冲为块

    给定一个类 class Foo DateTime Timestamp get set 和IObservable
  • 如何调整UIToolBar左右内边距

    我使用代码创建一个 UIToolbar 使用界面生成器创建另一个 UIToolbar 但是 发现两个工具栏的左右填充不同 如下所示 从界面生成器 来自代码 UIImage buttonImage UIImage imageNamed but
  • 使用捆绑器时在 gemspec 中声明开发依赖项仍然有用吗?

    我正在研究一种新的红宝石宝石 我熟悉使用 Bundler 来管理 gem source https rubygems org gemspec gem rspec rails 我熟悉在 gemspec 文件中指定依赖项 Gem Specifi
  • 2D 数组上的 Numpy 滚动窗口,作为以嵌套数组作为数据值的 1D 数组

    使用时np lib stride tricks as strided 如何使用嵌套数组作为数据值来管理 2D 数组 有更好的吗高效的方法 具体来说 如果我有一个 2Dnp array如下所示 其中一维数组中的每个数据项都是长度为 2 的数组
  • 捕获 C# 中存储过程的错误

    我有一个存储过程 用于在登录期间验证用户 如果成功 它会返回用户实体 效果很好 我的问题是 如果它不起作用 我会在 SP 中提出错误 如何捕获此错误并以最佳方式使用它 现在我得到了 nullreference 这是代码 存储流程 ALTER
  • 浮动div两列布局空白

    我有 X 个帖子 每个帖子都有固定的宽度和未知的高度 并希望它们位于单个 div 包装器中的两列中 但是 当我将它们全部放在左侧浮动时 就会发生这种情况 如何删除空格 在偶数块中添加clear right 在奇数块中添加clear left
  • 我可以使用 KIF 检查屏幕上是否存在视图吗?

    我正在执行 每个步骤之前 并且我想要执行注销步骤 我找不到任何关于在尝试触摸某个元素之前检查它是否存在 然后如果它不存在则执行其他操作的内容 是否可以使用 KIF 执行此操作 而无需引用我要检查的对象 就像是 if tester eleme
  • 将操作数xpath断言表达式与soapUI中的预期结果进行比较

    我正在使用soapUI 5 非专业版 我需要的只是验证 断言 预期结果部分中的数字大于零 所以这意味着 1 在XPath表达式 Xpath匹配 中我声明以下内容 我需要删除所有文本并且只有数字然后检查数字是否大于零 replace OUTB
  • Android - 强制取消AsyncTask

    我在我的活动之一中实现了 AsyncTask performBackgroundTask asyncTask new performBackgroundTask asyncTask execute 现在 我需要实现 取消 按钮功能 因此我必
  • Java 中的有符号字节类型和按位运算符?

    引用自甲骨文网站 http docs oracle com javase tutorial java nutsandbolts datatypes html byte 字节数据类型是8位带符号的二进制补码整数 最小值为 128 最大值为12
  • 从我的 Ruby 应用程序构建 Windows 可执行文件?

    我希望能够向一些同事发送 Ruby 应用程序 而不要求他们安装 Ruby 解释器 最好是单个 exe 我用谷歌搜索并找到了 RubyScript2Exe 您对此有什么经验 还有其他这样的工具或者有比构建 exe 更好的方法吗 我已经使用了大
  • R中的循环:如何保存输出?

    我正在尝试保存逻辑测试循环中的数据 所以我有以下数据 T1 lt matrix seq from 100000 to 6600000 length out 676 26 26 a matrix of 26X26 here with illu
  • Python字典-二分查找一个键?

    我想编写一个像字典一样的容器类 实际上派生自字典 该结构的键将是日期 当使用键 即日期 从类中检索值时 如果该日期不存在 则使用该键之前的下一个可用日期来返回该值 以下数据应该有助于进一步解释这个概念 Date key Value 2001
  • 使用 AudioWorklet 传输捕获的音频时如何防止中断/不稳定/故障?

    我们一直在开发基于 JavaScript 的音频聊天客户端 该客户端在浏览器中运行并通过 WebSocket 将音频样本发送到服务器 我们之前尝试使用 Web Audio API 的 ScriptProcessorNode 来获取样本值 这
  • 适用于使用 SSL Pinning 的移动应用程序的 Charles Proxy

    Charles Proxy 网站评论说 请注意 某些应用程序实施 SSL 证书固定 这意味着它们专门验证根证书 由于应用程序本身正在验证根证书 因此它不会接受 Charles 的证书 并且连接将失败 如果您已成功安装 Charles 根 S
  • 最终挂起后协程的状态

    协程具有初始挂起点和最终挂起点 Acoroutine handle is done https en cppreference com w cpp coroutine coroutine handle done当它在最终暂停点暂停时 然而