为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕侠2389804 2022-10-04 17:06:56
当一群戈鲁丁人互相等待并且他们都无法继续前进时,就会发生僵局。例如: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()

}


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信