Asynchronous 让多个对象使用一个不可变引用并并发运行的惯用方法

Asynchronous 让多个对象使用一个不可变引用并并发运行的惯用方法,asynchronous,concurrency,rust,async-await,Asynchronous,Concurrency,Rust,Async Await,使用async/await(或类似于人造丝板条箱的另一种方式)让一个结构的多个实例并行运行一个采用不可变引用的函数,最简单的方法是什么 我有一个数字信号处理项目,在这个项目中,我不断生成一个非常轻量级的结构,表示一个样本(只是一个复数和一个索引,所以2xf64+1xusize),然后我想把它输入到几个表示通道的结构中,让它们在同一个样本上并行执行昂贵的计算。这似乎比较简单,但我很难理解。当您编写同步代码时,惯用的方法是使用或板条箱,它提供了作用域线程,允许您跨线程边界保留引用 作用域线程当前不可

使用
async
/
await
(或类似于
人造丝
板条箱的另一种方式)让一个结构的多个实例并行运行一个采用不可变引用的函数,最简单的方法是什么


我有一个数字信号处理项目,在这个项目中,我不断生成一个非常轻量级的结构,表示一个样本(只是一个复数和一个索引,所以2x
f64
+1x
usize
),然后我想把它输入到几个表示通道的结构中,让它们在同一个样本上并行执行昂贵的计算。这似乎比较简单,但我很难理解。

当您编写同步代码时,惯用的方法是使用或板条箱,它提供了作用域线程,允许您跨线程边界保留引用


作用域线程当前不可能使用
async
/
wait
,因此在该生态系统中,惯用的解决方案是要么复制值,要么在引用计数的智能指针(例如)中共享它。

如果您的结构像您所说的那样轻量级,则最好只克隆示例。否则,您将需要一个
Arc
,这可能会更昂贵。