在 tokio watch 频道中克隆接收者和订阅发送者有什么区别?

问题描述 投票:0回答:1

当使用 tokio watch 频道时,我注意到我可以使用发送方中的订阅方法来获取另一个接收方,或者我可以克隆现有的接收方:

let (sender, mut receiver) = watch::channel(1);

let receiver_2 = sender.subscribe();
let receiver_3 = receiver.clone();

receiver_2 和receiver_3 似乎工作原理相同,但我缺少什么主要区别吗?

rust channel rust-tokio
1个回答
0
投票

查看

Receiver::clone
Sender::subscribe
的源代码,创建的接收器没有区别:它们都相当于
Receiver::from_shared (sender.shared.state.load().version(), sender.shared.clone())

唯一的区别是,如果没有现有的接收者,

Sender::subscribe
将重新打开发送者。

© www.soinside.com 2019 - 2024. All rights reserved.