我希望有一个在很长一段时间内执行一百万个异步任务的程序。我想动态地管理并发性,但是我们可以想象使用并发性20的更简单的版本。
我创建了一个系统,在每个异步任务中都使用tokio::task::spawn。tokio::task::spawn需要一个具有'static生存期的Future。如果我以某种方式使我的未来变得静止,这将如何影响我的程序的长期内存消耗?是否会有一些已经等待的未来的记忆积累?或者唯一真正积累的东西就是制造未来'static的东西
我是否可以将像&str这样的虚拟静态数据传递到每个未来的某个地方,以使未来的数据保持静态,但在等待它之后却没有内存?我错过了一些核心的理解。
发布于 2020-04-01 02:00:13
回答你的问题
通常,任何'static引用都存在于程序的整个生命周期;只有在main退出之后才会释放它。
如果您有许多不同的值具有'static生存期(即它们并不都是对一个共享值的引用),那么每个值都将占用一定的内存。一般来说,在程序的整个生命周期中,内存量是恒定的,应该很容易解释。
另请参阅:
回答你的问题
没有任何关于期货的要求,你必须有一个'static的一生。您所引用的是泛型类型的绑定,该绑定声明当前的任何引用都必须具有static生存期。这并不意味着需要引用。相反,使用拥有的价值。
另请参阅:
https://stackoverflow.com/questions/60953608
复制相似问题