最简单的使用方法是什么 async await (或另一种方式,如 rayon crate),让结构体的多个实例并行运行一个取一个不可变引用的函数?
async
await
rayon
我有一个数字信号处理项目,在这个项目中,我不断地生成一个非常轻量级的结构,代表一个样本(只有一个复数和一个索引,所以2xx f64 + 1x usize),然后我想把它输入到几个代表通道的结构中,让它们并行地对同一个样本进行昂贵的计算。 这似乎是比较直接的事情,但我却很难办到。
f64
usize
当你在写同步代码时,习惯性的方法是使用 "async await"(或另一种类似于 Rayon crate 的方式)来让多个结构体实例并行运行一个不可改变的引用。rayon 或 crossbeam crates,它提供了范围内的线程,允许你保持跨线程边界的引用。
crossbeam
目前,范围内的线程还不能通过 async await所以在该生态系统中,习惯性的解决方案是复制该值,或者将其共享到一个引用计数的智能指针中,如 Arc.
Arc