то не совсем пойму, как сделать схему single producer -> multiple consumers.
К примеру, второй тред всегда паникует. Заранее спасибо:
use crossbeam::channel;
use std::thread;
fn main() {
let (sender, receiver) = channel::unbounded::<Vec<u8>>();
let receiver_1 = receiver.clone();
let receiver_2 = receiver.clone();
let sender_thread = thread::spawn(move || {
let some_data = [1, 2, 3, 4].to_vec();
sender.send(some_data).unwrap();
});
let receiver_thread_1 = thread::spawn(move || {
let some_data = receiver_1.recv().unwrap();
println!("data in rec_1: {:?}", some_data);
});
let receiver_thread_2 = thread::spawn(move || {
let some_data = receiver_2.recv().unwrap();
println!("data in rec_2: {:?}", some_data);
});
sender_thread.join();
receiver_thread_1.join();
receiver_thread_2.join();
}
паника какая
в кросбимовском канале сообщения не клонируются, то есть одно сообщение будет прочитано одним из получателей
Обсуждают сегодня