[英]Goroutine buffered channel deadlock
在主 goroutine 中,如果我向通道發送超出容量的值,我會遇到死鎖,但是如果我在不同的 goroutine 中發送,就不會出現死鎖,為什么?
func main() {
c := make(chan int, 2)
for i := 0; i < 3; i++ {
c <- i
}
}
func main() {
c := make(chan int, 2)
go func() {
for i := 0; i < 3; i++ {
c <- i
}
close(c)
}()
time.Sleep(5 * time.Second)
}
func main() {
c := make(chan int, 2)
for i := 0; i < 3; i++ {
// Blocking operation
c <- i
}
}
By default >>>sends<<< and receives block(!) until both the sender and receiver are ready
結帳 - https://gobyexample.com/channels
您的頻道上沒有接收者,主 goroutine(= 發送者)被阻止
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.