當(dāng)一群戈魯丁人互相等待并且他們都無法繼續(xù)前進(jìn)時(shí),就會發(fā)生僵局。例如:func main() {
ch := make(chan int)
ch <- 1
fmt.Println(<-ch)
}但是,如果我們不使用通道,僵局有沒有可能發(fā)生?
1 回答

米脂
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
為了出現(xiàn)死鎖,您只需要一個(gè)(或多個(gè))組件以沒有人會首先繼續(xù)的方式等待。
通道是在 Go 中遇到死鎖的常用方法,但用于同步的任何內(nèi)容也可以觸發(fā)它。
以下是一些簡單死鎖的示例:
互斥:
package main
import "sync"
func main() {
var mu sync.Mutex
mu.Lock()
mu.Lock()
}
候補(bǔ)組:
package main
import "sync"
func main() {
var wg sync.WaitGroup
wg.Add(1)
wg.Wait()
}
- 1 回答
- 0 關(guān)注
- 102 瀏覽
添加回答
舉報(bào)
0/150
提交
取消