使用 Golang 实现并发写文件的读写锁
import (
"fmt"
"sync"
"time"
)
var mutex sync.RWMutex
func Write(i int) {
println(i, "write ------->>>>>>>>>>>>")
mutex.Lock()
println(i, "./././././ writing ............")
time.Sleep(1 * time.Second)
mutex.Unlock()
println(i, "write ------- over")
}
func main() {
for i:=0;i<=3; i++ {
go Write(i)
}
time.Sleep(15*time.Second)
return
}
执行结果:
3 write ------->>>>>>>>>>>>
3 ./././././ writing ............
1 write ------->>>>>>>>>>>>
2 write ------->>>>>>>>>>>>
0 write ------->>>>>>>>>>>>
3 write ------- over
1 ./././././ writing ............
1 write ------- over
2 ./././././ writing ............
2 write ------- over
0 ./././././ writing ............
0 write ------- over