这是我要编写的简化代码:
use parking_lot::rwlock;
let buffers: Box<[rwlock<MyBuffer>]> = Box::new([ ... ]);
let (sender,receiver) = std::sync::mpsc::channel();
thread::spawn(move || {
let guard = buffers[ ... ].write().unwrap();
expensive_computation(&mut *guard);
sender.send(guard.downgrade()).unwrap();
});
for message in receiver.iter() {
// Handle the message
}
不过,RwLockReadGuard
is not Send
是这样,因此该代码无法编译。
我应该如何解决在线程边界上发送rwlockReadGuard
的问题?