我需要清理 tokio::task::JoinSet 中已完成的任务吗?

问题描述 投票:0回答:1

注意:我也在 redditrust 论坛中发布了这个问题。

嗨,我正在编写一个 TUI 可执行文件,我在 crossterm::event::EventStream 上使用 tokio::select 来实现非阻塞循环来接收用户键盘/鼠标事件。

同时,我还想创建一个异步任务队列,可以运行一些通用任务:读/写文件、更新数据逻辑、延迟/超时方法。

这里的task这个词类似于C/C++中具有全局上下文的函数指针。

在阅读了一些文档后,我发现 rust 和 tokio 提供了 tokio::task::JoinSet,它可以帮助我创建新的异步任务,并在多个绿色线程中运行它们。也可以中止所有任务,或等待它们完成。

这可能就是我想要的。但我还有1个问题:

JoinSet 不是未来的 Stream,因此我无法在其上使用 tokio::select。那么我怎么知道什么任务完成了呢?

如果我不选择它,但继续创建新任务。它会随着创建的任务而增加内存使用量,并最终导致内存不足并使 TUI 应用程序崩溃吗?

rust rust-tokio
1个回答
0
投票

这个问题的答案是:https://users.rust-lang.org/t/do-i-need-to-clean-the-completed-tasks-in-tokio-joinset/117096/2?u=林荣斌16.

如果有人有同样的问题,请在这里发帖。

© www.soinside.com 2019 - 2024. All rights reserved.