gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:05:33 24 4
gpt4 key购买 nike

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

  1. 如果我想在多个线程之间不可变地共享我的数据,我将使用 Arc<T> .
  2. 如果我想可变地共享它,我将使用 Arc<Mutex<T>> .

如果我想先可变地共享它,然后在循环中不可变地共享它怎么办?所以:

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

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

最佳答案

A std::sync::RwLock是我要找的,谢谢@Shepmaster!

关于rust - 当我很少需要可变数据时,如何在多个线程之间共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29224151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com