Go同步单信道实现并发锁
思路 使用Chan加锁 同步信道bool类型 容量为1 开启多个协程
func myLock() {
chanLock := make(chan bool, 1)
var x int
for i := 0; i < 5000; i++ {
go chanWithLock(chanLock, &x)
}
time.Sleep(time.Second)
fmt.Println(x)
}
/*
*传入对应的信道和对应类型的指针地址
*/
func chanWithLock(mychan chan bool, x *int) {
// 同步阻塞通道 数据写入
mychan <- true
*x = *x + 1
// 通道通畅数据读取
<-mychan
}
Go同步单信道实现并发锁最先出现在Python成神之路。
共有 0 条评论