为了账号安全,请及时绑定邮箱和手机立即绑定

使用通道或互斥体模拟无线电通信

使用通道或互斥体模拟无线电通信

Go
富国沪深 2022-04-26 14:50:39
我需要模拟由 N 个节点组成的无线电通信网络,具有以下属性:节点要么先发送后接收数据,要么先接收后发送数据,但不能同时进行。无线发送的数据被当时处于接收模式的所有节点接收。如果两个或多个节点同时发送数据,数据就会丢失。节点之间没有时间同步。在 Go 中,如果我使用通道来模拟传输媒体,数据会被序列化,并且只有一个接收器获取数据,而不是全部。另外,如果两个发件人尝试同时发送,我想不出一种“破坏”数据的方法。无论我是否使用互斥锁,其中一位发件人都会成功发送其消息。
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

为什么不使用 Golang Channels创建发布者和订阅者模块。

创建一个集中的排队系统,您的所有发送者和接收者节点都会自行注册。如果任何节点发送数据,它将转到该模块并从发送者的列表中选择发送者通道并开始对其进行写入。这同样适用于接收器。

您必须为每个节点创建一个通道并将其注册到中央发布/订阅模块。这肯定会解决你的问题。


查看完整回答
反对 回复 2022-04-26
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信