写入缓冲通道超过其容量

writing to buffer channel more than its capacity

覆盖缓冲区通道超过其容量有什么影响吗?

因为还有另一个 go routine 并且 main go routine 没有加入它所以这里没有死锁

    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
        //}

        
    }

because of that no deadlock here

A go build -race . 确实不会检测到竞争条件。

但是没有死锁的主要原因是主函数在第二个fmt.Println(<-ch)后退出。

即使匿名 goroutine 在 ch <- 4 上被阻塞,所有程序仍然会停止。