我需要模拟由 N 个节点组成的无线电通信网络,具有以下属性:节点要么先发送后接收数据,要么先接收后发送数据,但不能同时进行。无线发送的数据被当时处于接收模式的所有节点接收。如果两个或多个节点同时发送数据,数据就会丢失。节点之间没有时间同步。在 Go 中,如果我使用通道来模拟传输媒体,数据会被序列化,并且只有一个接收器获取数据,而不是全部。另外,如果两个发件人尝试同时发送,我想不出一种“破坏”数据的方法。无论我是否使用互斥锁,其中一位发件人都会成功发送其消息。
1 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
为什么不使用 Golang Channels创建发布者和订阅者模块。
创建一个集中的排队系统,您的所有发送者和接收者节点都会自行注册。如果任何节点发送数据,它将转到该模块并从发送者的列表中选择发送者通道并开始对其进行写入。这同样适用于接收器。
您必须为每个节点创建一个通道并将其注册到中央发布/订阅模块。这肯定会解决你的问题。
- 1 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消