我需要模拟由N个节点组成的 radio 通信网络,这些网络具有以下属性:
在Go中,如果我使用 channel 来模拟传输介质,则数据将被序列化,只有一个接收器获取数据,而不是全部。
另外,如果两个发件人尝试同时发送,我想不出一种“破坏”数据的方法。无论我是否使用互斥锁,发件人之一都将成功发送其消息。
最佳答案
为什么不使用Golang channel 创建发布者和订阅者模块。
创建一个集中式排队系统,您的所有发送方和接收方节点都将自己注册。如果有任何节点发送数据,它将进入该模块并从发送者列表中选择发送者 channel 并开始在其上进行写操作。接收机也一样。
您必须为每个节点创建一个 channel ,并将其注册到中央发布/订阅模块。这肯定会解决您的问题。