1. 程式人生 > >go語言中高併發讀寫鎖詳解

go語言中高併發讀寫鎖詳解

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")

}

在高併發中,讀寫鎖是表示,讀的過程中可以有多個讀,一旦碰到寫的過程只能有一個寫,即寫的時候只能有一個寫並且其他的不能讀。