当我运行下面的代码片段时,它看起来总是打印值 20000000。当我创建更多 go 例程以在没有锁定的情况下递增计数器时,它显示出类似的行为。但是不应该存在某种竞争条件吗?谢谢 !
package main
import "fmt"
const (
N_INCREMENTS = 10000000
)
func main() {
var counter int = 0
donechan := make(chan bool)
go func(done chan<- bool) {
for i := 0; i < N_INCREMENTS; i++ {
counter++
}
done <- true
}(donechan)
for i := 0; i < N_INCREMENTS; i++ {
counter++
}
_ = <-donechan
fmt.Println("Count: ", counter)
}
饮歌长啸
相关分类