go語言中高併發讀寫鎖詳解
阿新 • • 發佈:2019-02-05
package main
import (
"sync"
"time"
)
var m *sync.RWMutex
func main() {
m = new(sync.RWMutex)
//寫的時候啥都不能幹
go write(1)
go read(2)
go write(3)
time.Sleep(4 * time.Second)
}
func read(i int) {
println(i, "read start") m.RLock() println(i, "reading") time.Sleep(1 * time.Second) m.RUnlock() println(i, "read end")
}
func write(i int) {
println(i, "write start")
m.Lock()
println(i, "writing")
time.Sleep(1 * time.Second)
m.Unlock()
println(i, "write end")
}
在高併發中,讀寫鎖是表示,讀的過程中可以有多個讀,一旦碰到寫的過程只能有一個寫,即寫的時候只能有一個寫並且其他的不能讀。