Golang 可见性或 CPU 线程缓存问题
Golang visibility or CPU thread cache issue
1) golang如何解决可见性问题?
2) 下面的代码有什么问题吗?
package main
type Service struct {
stop bool
}
func (s *Service) Run() {
for !s.stop {
//Some logic
}
}
func (s *Service) Stop() {
s.stop = true
}
func main() {
s := &Service{}
go s.Run()
//Some logic
s.Stop()
}
在这种情况下,我建议使用 context.WithCancel 来停止 goroutine。
1) golang如何解决可见性问题?
2) 下面的代码有什么问题吗?
package main
type Service struct {
stop bool
}
func (s *Service) Run() {
for !s.stop {
//Some logic
}
}
func (s *Service) Stop() {
s.stop = true
}
func main() {
s := &Service{}
go s.Run()
//Some logic
s.Stop()
}
在这种情况下,我建议使用 context.WithCancel 来停止 goroutine。