您现在的位置是:主页 > news > 国外做机器人的网站/百度权重查询
国外做机器人的网站/百度权重查询
admin2025/6/16 3:03:07【news】
简介国外做机器人的网站,百度权重查询,网站怎么做图片滚动,庐江网站制作读写锁是针对读写的互斥锁基本遵循两大原则:1、可以随便读,多个goroutine同时读2、写的时候,啥也不能干。不能读也不能写RWMutex提供了四个方法:func (*RWMutex) Lock // 写锁定func (*RWMutex) Unlock // 写解锁func (*RWMutex) …
读写锁是针对读写的互斥锁
基本遵循两大原则:
1、可以随便读,多个goroutine同时读
2、写的时候,啥也不能干。不能读也不能写
RWMutex提供了四个方法:
func (*RWMutex) Lock // 写锁定
func (*RWMutex) Unlock // 写解锁
func (*RWMutex) RLock // 读锁定
func (*RWMutex) RUnlock // 读解锁
一、随便读
package main
import (
"sync"
"time"
)
var m *sync.RWMutex
func main() {
m = new(sync.RWMutex)
// 多个同时读
go read(1)
go read(2)
time.Sleep(2*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 over")
}运行结果:
1 read start
1 reading
2 read start
2 reading
1 read over
2 read over
可以看出1 读还没有结束,2已经在读
二、写的时候啥也不能干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(2*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 over")
}
func write(i int) {
println(i,"write start")
m.Lock()
println(i,"writing")
time.Sleep(1*time.Second)
m.Unlock()
println(i,"write over")
}输出:
1 write start
1 writing
2 read start
3 write start
1 writing over
2 reading
2 read over
3 writing
3 write over
有疑问加站长微信联系(非本文作者)