netpoll icon indicating copy to clipboard operation
netpoll copied to clipboard

PollManager 如何实现优雅退出?

Open Ccheers opened this issue 3 years ago • 2 comments
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
}

Ccheers avatar Mar 23 '22 10:03 Ccheers

poll 是底层共享的,同时也维护 client 端通过 Dialer 创建的连接,不单独属于 server,因此不在 server 退出范围内。

Hchenn avatar Mar 23 '22 12:03 Hchenn

poll 是底层共享的,同时也维护 client 端通过 Dialer 创建的连接,不单独属于 server,因此不在 server 退出范围内。

但是 pollmanager 并没有暴露给 上层,是否需要暴露出来呢?

Ccheers avatar Mar 23 '22 13:03 Ccheers

@Ccheers PollManager 只是一个代理工作的结构体,本身它并没有什么工作。

真正有工作的是在创建的 EventLoop 对象里,而它是可以被 Graceful Shutdown 的。

至于你目前贴出来的代码,确实,这个是不能被外部掉用的。因为现在整个 pollmanager 都是私有的。

joway avatar Mar 28 '23 03:03 joway