当一群戈鲁丁人互相等待并且他们都无法继续前进时,就会发生僵局。例如:func main() {
ch := make(chan int)
ch <- 1
fmt.Println(<-ch)
}但是,如果我们不使用通道,僵局有没有可能发生?
1 回答
米脂
TA贡献1836条经验 获得超3个赞
为了出现死锁,您只需要一个(或多个)组件以没有人会首先继续的方式等待。
通道是在 Go 中遇到死锁的常用方法,但用于同步的任何内容也可以触发它。
以下是一些简单死锁的示例:
互斥:
package main
import "sync"
func main() {
var mu sync.Mutex
mu.Lock()
mu.Lock()
}
候补组:
package main
import "sync"
func main() {
var wg sync.WaitGroup
wg.Add(1)
wg.Wait()
}
- 1 回答
- 0 关注
- 79 浏览
添加回答
举报
0/150
提交
取消