Golang可见性或CPU线程缓存问题

时间:2019-05-24 10:35:50

标签: go concurrency volatile

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()
}

1 个答案:

答案 0 :(得分:0)

在这种情况下,我建议使用context.WithCancel停止goroutine。