1 个不稳定版本
0.1.0 | 2022年1月8日 |
---|
#6 in #取消
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)理解取消并在取消启动时返回错误,则足够。
状态
此仓库和包目前是一个实验和讨论的基础。它尚未完成,并且包提供的接口可能会更改。
许可证
根据您的选择,许可如下
- Apache 许可证第 2 版 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。