1 个不稳定版本

0.1.0 2022年1月8日

#6 in #取消

MIT/Apache 许可

26KB
496

min-cancel-token

此包提供了一个标准化的接口/特质,用于 CancellationToken,它可供库和应用程序使用,以响应取消事件。

CancellationToken 接口可以通过两种方式交互

  • 令牌可以同步查询是否已启动取消
  • 可以注册一个回调,当取消启动时将被调用。

因此,整体接口遵循 C++ https://cppreference.cn/w/cpp/thread/stop_token 的设计。然而,此处仅标准化了接口,没有具体的实现。

这有利于不同平台和应用程序提供最适合它们的实现。例如。

  • 普通应用程序可以使用堆分配的 CancellationToken 实现,这些实现在此作为 std_impls 模块的一部分提供。
  • 实时系统嵌入式应用程序可以每个任务使用一个静态分配的 CancellationToken
  • 异步运行时可以在每个任务的任务状态中嵌入 CancellationToken,从而实现按任务取消。

使用场景

  • 优雅地处理应用程序关闭,例如,当按下关闭按钮或接收到信号时。
  • 如果用户取消操作,停止长时间运行的计算
  • 当不再需要子任务时停止子任务。例如,在 Web 服务器中,如果发起请求的客户端断开连接,就不再需要执行操作。

其他背景

参见 取消令牌的案例

可组合性

取消令牌被设计为可组合的。高级任务(例如整个应用程序)的取消可以触发低级任务(例如执行数据库查询)的取消。这又可能导致特定 IO 调用(如等待从 TCP 连接读取数据)的取消。

因此,应用程序的大部分可能不需要了解取消 - 如果长时间运行的底层调用(例如套接字和磁盘 IO)理解取消并在取消启动时返回错误,则足够。

状态

此仓库和包目前是一个实验和讨论的基础。它尚未完成,并且包提供的接口可能会更改。

许可证

根据您的选择,许可如下

无运行时依赖