亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang 在死鎖檢測中有奇怪的行為

golang 在死鎖檢測中有奇怪的行為

Go
慕的地6264312 2021-11-08 18:22:01
package mainimport (    "log"    "net/http")func useless_func(address string) []byte {    http.Get("https://www.google.com")    return nil}func test_a(test_channel chan int) {    test_channel <- 1    return}func test() {    test_channel := make(chan int)    for i := 0; i < 10; i++ {        go test_a(test_channel)    }    for {        log.Println(<-test_channel)    }}func main() {    test()}此代碼不會因死鎖而中斷,我在 Linux 4.1.6-1 和 3.16.0-4 下使用 go 1.5.1 amd64 嘗試此代碼并得到相同的結果。但是如果我刪除 useless_func 或使用 go 1.4.3 或在 windows 下運行它,它會表現良好。這真的很奇怪,如果有人能解釋一下嗎?
查看完整描述

1 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

Dominik Honnef針對 Go 1.5.1 的問題 ##12734提供了答案:

dominikh:問題真正在于使用 cgo (網絡使用,忽略細節)。使用cgo時,Go死鎖檢測無法正常工作,因為C世界隨時可能調用Go函數,所以理論上不存在死鎖;我們可能只是無限期地等待外部函數調用。


查看完整回答
反對 回復 2021-11-08
  • 1 回答
  • 0 關注
  • 314 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號