写入超过其容量的缓冲通道

覆盖缓冲区通道超过其容量确实会产生任何影响?


由于有另一个go例程和主要的go例程没有加入它,所以这里没有死锁


    package main

    

    import "fmt"

    

    func main() {

        ch := make(chan int, 2)

        go func (){

        ch <- 1

        ch <- 2

        ch <- 4//blocks here but scheduler picked up another go routine

        ch <- 6

        ch <- 10

        //close(ch)

        }()

        fmt.Println(<-ch)

        fmt.Println(<-ch)

        //for v:=range ch{

        //fmt.Println(<-ch)//1 2 4 6 10

        //}


        

    }


慕斯709654
浏览 89回答 1
1回答

万千封印

因此,这里没有僵局A 确实不会检测到争用条件。go build -race .但是没有死锁的主要原因,是主函数在第二个之后退出。fmt.Println(<-ch)即使匿名的戈鲁廷被封锁了,all程序也会停止。ch <- 4
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go