package main
import "fmt"
func main() {
a := 0
times := 10000 // <-- HERE
c := make(chan bool)
for i := 0; i < times; i++ {
go func() {
a++
c <- true
}()
}
for i := 0; i < times; i++ {
<-c
}
fmt.Printf("a = %d\n", a)
}
package main
import (
"fmt"
"sync"
)
func main() {
a := 0
times := 10000
c := make(chan bool)
var m sync.Mutex
for i := 0; i < times; i++ {
go func() {
m.Lock() // 取得鎖
a++
m.Unlock() // 釋放鎖
c <- true
}()
}
for i := 0; i < times; i++ {
<-c
}
fmt.Printf("a = %d\n", a)
}