【发布时间】:2021-07-09 18:51:41
【问题描述】:
我查看了this 的帖子,但不知道我的代码哪里出了问题。我有一个结构向量,每个结构都包含一个mpsc::Sender 和mpsc::Receiver,我正在尝试将这些结构中的每一个移动到一个线程中并不断收到此编译错误(以及发送方的对称错误)。由于 Sender 和 Receiver 是结构的一部分,我不知道如何克隆它们。
for obj in objs.iter() {
let handle = thread::spawn(move || {
^^^^^^^^^^^^^ `std::sync::mpsc::Receiver<abc::xyz>` cannot be shared between threads safely
obj.do_something();
...
});
...
}
【问题讨论】:
-
这里有一个可以为您节省大量时间的建议:切换到crossbeam-channel,其发送者和接收者都是
Send和Sync。 (它们的效率也更高,并且拥有经过深思熟虑的 API。)
标签: multithreading rust channel