Go之路(十五):包-锁
包-锁

例子:
package main
import(
"fmt"
"sync"
"time"
"sync/atomic"
)
var hclock sync.RWMutex
var count int32
// func write(b map[int]string,i int){
// hclock.Lock()
// b[i] = "aaaaaa"
// hclock.Unlock()
// }
func main() {
a := make(map[int]string)
a[0] = "z"
a[1] = "a"
a[2] = "b"
a[3] = "c"
for i:=0; i< 1; i++{
// go write(a,i)
go func(b map[int]string){
hclock.Lock()
b[i] = "aaa"
hclock.Unlock()
}(a)
}
for i := 0; i<=100 ; i++{
go func(a map[int]string){
for{
hclock.RLock()
// fmt.Println(a)
time.Sleep(time.Millisecond)
hclock.RUnlock()
atomic.AddInt32(&count,1)
}
}(a)
}
time.Sleep(time.Second*3)
fmt.Println(atomic.LoadInt32(&count))
}
主要是互斥锁和读写互斥锁

浙公网安备 33010602011771号