Thường thì khi tôi ủy nhiệm công việc cho các chủ đề, tôi có một phần dữ liệu sẽ tồn tại tất cả các chủ đề. Một ví dụ sẽ numbers
trong ví dụ sau:Có thể chia sẻ dữ liệu với chủ đề mà không cần sao chép không?
use std::thread;
fn main() {
let numbers = vec![1, 2, 3];
let thread_a = thread::spawn(|| { println!("{}", numbers.len()); });
let thread_b = thread::spawn(|| { println!("{}", numbers.len()); });
thread_a.join().unwrap();
thread_b.join().unwrap();
}
Nó không thay đổi bất cứ nơi nào, và vì join
s, nó đảm bảo rằng các chủ đề được sử dụng xong. Tuy nhiên, kiểm tra mượn của Rust không thể nói được.
Các giải pháp mà tôi đã thấy cho đến nay tất cả đều liên quan đến nhân bản đoạn dữ liệu (hoặc nhân bản một dữ liệu Arc
). Có thể làm điều đó mà không có bất kỳ nhân bản nào không?
Vâng, để đặt thứ gì đó trong 'Arc' bạn * làm * thực hiện phân bổ. –
@MatthieuM. Điểm tốt; đã thêm một ghi chú. –