常见问题
-
Send 允许线程间转移所有权
-
Sync 允许多线程同时访问
一、常用方式1
use std::sync::mpsc;
use std::thread;
use std::time::Duration;
fn main() {
let (provider, consumer) = mpsc::channel();
let provider1 = mpsc::Sender::clone(&provider);
thread::spawn(move || {
vec![1, 2, 3, 4, 5, 6].iter()
.map(|x| x.to_string())
.for_each(|x| {
provider.send(x).unwrap();
thread::sleep(Duration::from_millis(100));
});
});
thread::spawn(move || {
vec![11, 22, 33, 44, 55, 66].iter()
.map(|x| x.to_string())
.for_each(|x| {
provider1.send(x).unwrap();
thread::sleep(Duration::from_millis(100));
});
});
for received in consumer {
println!("{}", received);
}
}