【发布时间】:2016-12-20 15:27:02
【问题描述】:
我有一个结构图如下:
type SocketID string
type Socket struct {
socket //...
id string
}
type Channel struct {
sync.Mutex
sockets map[SocketID]Socket
}
我希望能够向其中添加子频道,其中每个Socket 属于一个子频道。我尝试将通道结构更改为:
type SubchannelID string
type Channel struct {
sync.Mutex
sockets map[SocketID]Socket
subchannels map[SubchannelID]map[SocketID]Socket
}
但是我遇到的问题是从Channel 中删除Socket 成为O(n^2) 操作,并且每个套接字在sockets 和subchannels 映射之间重复。我将如何优化这一点,同时保持通道和子通道远离套接字?
【问题讨论】: