netpoll
netpoll copied to clipboard
PollManager 如何实现优雅退出?
trafficstars
Server 实现了优雅退出,但是 PollManager 不需要关闭吗?
// 这里并没有被代码引用
func (m *manager) Close() error {
for _, poll := range m.polls {
poll.Close()
}
m.NumLoops = 0
m.balance = nil
m.polls = nil
return nil
}
poll 是底层共享的,同时也维护 client 端通过 Dialer 创建的连接,不单独属于 server,因此不在 server 退出范围内。
poll 是底层共享的,同时也维护 client 端通过 Dialer 创建的连接,不单独属于 server,因此不在 server 退出范围内。
但是 pollmanager 并没有暴露给 上层,是否需要暴露出来呢?
@Ccheers PollManager 只是一个代理工作的结构体,本身它并没有什么工作。
真正有工作的是在创建的 EventLoop 对象里,而它是可以被 Graceful Shutdown 的。
至于你目前贴出来的代码,确实,这个是不能被外部掉用的。因为现在整个 pollmanager 都是私有的。