import (
"fmt"
"runtime"
)
/*
结果:
有时99
有时100
*/
var counter_num int
const MAXSIZE = 100
func Count_num(ch chan int) {
counter_num++
ch <- 1
}
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
var chs [MAXSIZE] chan int
for i := 0; i < MAXSIZE; i++ {
chs[i] = make(chan int)
go Count_num(chs[i])
}
for _, ch := range chs {
<-ch
}
fmt.Println(counter_num)
}
这是我写的多个goroutine访问共享变量的代码,好像无法解决多goroutine同时访问共享变量的问题,网上也看到一个加锁的例子,但是好像听说go不需要加锁也可以解决这个问题.
牛人帮我看看。。。