如果我们不使用通道,是否可能发生死锁?

当一群戈鲁丁人互相等待并且他们都无法继续前进时,就会发生僵局。

例如:

func main() {
        ch := make(chan int)
        ch <- 1
        fmt.Println(<-ch)
}

但是,如果我们不使用通道,僵局有没有可能发生?


慕侠2389804
浏览 80回答 1
1回答

米脂

为了出现死锁,您只需要一个(或多个)组件以没有人会首先继续的方式等待。通道是在 Go 中遇到死锁的常用方法,但用于同步的任何内容也可以触发它。以下是一些简单死锁的示例:互斥:package mainimport "sync"func main() {&nbsp; &nbsp; var mu sync.Mutex&nbsp; &nbsp; mu.Lock()&nbsp; &nbsp; mu.Lock()}候补组:package mainimport "sync"func main() {&nbsp; &nbsp; var wg sync.WaitGroup&nbsp; &nbsp; wg.Add(1)&nbsp; &nbsp; wg.Wait()}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go