通过 Arc<Mutex> 从 for 循环生成和运行并发线程的最佳方法是什么<Vec>?



Im同时运行应用程序的单线程和多线程版本。没有速度优势。也就是说,访问Arc<Mutex<Vec>>并同时处理每个条目的最佳方式是什么?

您不能同时处理Arc<Mutex<Vec<T>>>-互斥体包裹整个向量,因此除了锁定它的线程之外,没有其他线程能够访问它。

如果您预先知道元素的数量,则可以使用Arc<Vec<Mutex<T>>>。每个元素都有一个互斥锁,因此线程将只锁定元素。但是,由于Vec是共享的,您将无法增长或收缩它。

的并发部分也有更专门的结构http://lib.rs,具有不同的语义,可能符合您的需求。

最新更新