Im同时运行应用程序的单线程和多线程版本。没有速度优势。也就是说,访问Arc<Mutex<Vec>>
并同时处理每个条目的最佳方式是什么?
您不能同时处理Arc<Mutex<Vec<T>>>
-互斥体包裹整个向量,因此除了锁定它的线程之外,没有其他线程能够访问它。
如果您预先知道元素的数量,则可以使用Arc<Vec<Mutex<T>>>
。每个元素都有一个互斥锁,因此线程将只锁定元素。但是,由于Vec
是共享的,您将无法增长或收缩它。
的并发部分也有更专门的结构http://lib.rs,具有不同的语义,可能符合您的需求。