func (s *Server) start() {
s.Lock()
defer s.Unlock()
if !s.isClosed{
go s.processing()
}
go s.start()
}
func (s *Server) processing() {
s.Lock()
// do stuff
s.Unlock()
}
我有一个工作中的 Golang 项目,其中有一段代码遵循上面显示的逻辑。
我不明白为什么这种逻辑会像我预期的那样会出现死锁。