golang map
真的是深坑,PHP中直接写入没问题,GOLANG和PHP不一样,必须加锁。
package main
import (
"fmt"
"sync"
"time"
)
var m = make(map[int]int)
var m2 = make(map[int]int)
var m3 = make(map[int]int)
var lock sync.Mutex
func main() {
for i := 0; i < 1000; i++ {
go func(n int) {
lock.Lock() //加锁,加锁期间其他协程会进入阻塞状态直到解锁
time.Sleep(time.Duration(1)*time.Second)
fmt.Println(n, "在执行")
m[n] = n
m2[n] = n
m3[n] = n
for j := 0; j < 1000; j++ {
m[n] = j
m2[n] = j
m3[n] = j
}
lock.Unlock() //解锁
}(i)
}
fmt.Println("finished.")
//time.Sleep(time.Duration(20)*time.Second)
}
加锁。