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