错误原因,map是线程不安全的,当有并发读写的时候就会报错
解决办法:使用读写锁sync.RWMutex:
golang读写锁
规则
当读锁存在时,可以有其他读锁一起存在,但是写锁需要等待
当写锁存在时,读锁和写锁都需要等待
读锁可以并发,读锁与写锁互斥,写锁与写锁互斥
var rw sync.RWMutex
//读锁加锁
rw.Rlock()
//读锁解锁
rw.Runlock()
错误原因,map是线程不安全的,当有并发读写的时候就会报错
解决办法:使用读写锁sync.RWMutex:
golang读写锁
规则
当读锁存在时,可以有其他读锁一起存在,但是写锁需要等待
当写锁存在时,读锁和写锁都需要等待
读锁可以并发,读锁与写锁互斥,写锁与写锁互斥
var rw sync.RWMutex
//读锁加锁
rw.Rlock()
//读锁解锁
rw.Runlock()