sync.Map 源码解析
结构体 type Map struct { mu Mutex read …
结构体 type Map struct { mu Mutex read …
锁也有两种模式,一种正常模式,一种饥饿模式,两者的区别主要如下:
1. 正常都是FIFO模式,在队列中第一个等待的goroutine唤醒后获取锁,但是如果此时有新的goroutine来竞争锁,此时新的goroutine有优势获取锁,因为新的goroutine正在占据CPU使用;
2. 饥饿模式下,严格按照FIFO模式,新的goroutine获取不到当前锁,主动权直接交给队列第一个goroutine
在日常编码过程中,经常使用到channel来作为FIFO的队列,又或者来协程之间同步信号,那么究竟内部是如何实现的呢?
示例 context包也算是golang日常经常用到…
a := [2]string{“1″,”2”} b := [2]int{1,2…