golang代码 channel模拟锁

 

    mutex := make(chan struct{}, 1) // 容量必须为1

    increase := func() {
        mutex <- struct{}{} // 加锁
        ......
        <-mutex // 解锁
    }

    --------------------------------------------------------------------------------
    mutex := make(chan struct{}, 1)
    mutex <- struct{}{} // 此行是必需的

    counter := 0
    increase := func() {
        <-mutex // 使用接收操作来加锁
        counter++
        mutex <- struct{}{} // 解锁
    }

 

posted @ 2020-05-27 20:33  是的哟  阅读(264)  评论(0编辑  收藏  举报