当我需要它很少可变时,如何在多个线程之间共享数据?

时间:2015-03-24 02:43:57

标签: rust

我有一些T类型的数据,它既不实现Copy也不实现Clone

  1. 如果我想在多个线程之间不可分割地共享数据,我将使用Arc<T>
  2. 如果我想要分享它,我将使用Arc<Mutex<T>>
  3. 如果我想首先分享它,然后在循环中不可分割地怎么办?所以:

    • 我无法使用Arc<T>Arc<Mutex<Arc<T>>>,因为我无法改变“可变”主题中的数据。
    • 我可以使用Arc<Mutex<T>>,但是我必须在每个“不可变”线程中lock()才能到达T,从而失去并行性。
    • 我无法在变异完成后复制数据,因为它很昂贵(或者无法实现Clone)。

    那么什么是正确有效的解决方案?

1 个答案:

答案 0 :(得分:4)

我正在寻找std::sync::RwLock,感谢@Shepmaster!