#tokio #tokio-task #async #任务管理 #tokio-util #utils

tokio-async-utils

支持异步操作的实用工具,例如可以在线程句柄释放时中止任务的 TaskHandle 类型

4 个版本

0.1.3 2024年3月5日
0.1.2 2024年3月5日
0.1.1 2024年3月5日
0.1.0 2024年3月5日

533并发

MIT 许可证

7KB
106 代码行

异步实用工具

这个简单的crate是为了管理我的Tokio JoinHandles而创建的。异步运行时决定如何处理启动的任务,Tokio采用了将启动的任务分离出去的模型。无论你是否认为这是一个好的选择,为了避免泄漏任务并便于任务管理,使任务“附加”到某个句柄并在句柄释放时取消它们是有用的。这使得结构化并发变得更加容易,因为你不需要手动通过某些通道发送值,而只需确保父任务持有子任务的 TaskHandle 而不释放它即可。这正是这个crate主要来源的地方。目前它提供了3(实际上是2)个结构来帮助管理并发。

提供类型

  • TaskHandle - 在 tokio::task::JoinHandle 上调用 to_task_handle() 后获得的 JoinHandle 包装器。在线程句柄释放时中止内部任务。
  • TaskSet - Tokio JoinSet 的别名。Tokio JoinSet 在释放时已经中止任务。
  • TaskMap - HashMap<K, TaskHandle> 的包装器。如果你想要对你的任务“集合”有更多的控制,这会更容易看到是否已经启动了一些任务。

所有这些类型在释放时都会中止任务。将来我可能会在这里添加更多我在日常编码中找到的有用的“异步”实用工具。

依赖项

~2.3–4MB
~65K SLoC