ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
变量counter会进行4次读和写操作,每个 goroutine 执行两次。但是,程序终止时, counter变量的值为 2。 ~~~ var ( counter int wg sync.WaitGroup ) func main() { wg.Add(2) //等待两个goroutine //创建两个goroutine go inCounter(1) go inCounter(2) wg.Wait() //等待goroutine完成 fmt.Println("完成", counter) } func inCounter(id int) { defer wg.Done() for count := 0; count < 2; count++ { value := counter //捕获counter的值 runtime.Gosched() //从线程退出,并放回到队列 value ++ //增加本地value的值 counter = value //将该值保存回counter } } ~~~ ![](https://box.kancloud.cn/d70760e85d4b4dc5439feeff0284b0e7_802x521.png)