1 回答

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
我認(rèn)為您的主線程正在等待來自頻道的內(nèi)容
func main() {
channel := make(chan int)
go func() {
time.Sleep(3*time.Second)
channel <- 1 // Sending something to the channel to let the main thread continue
channel <- 2
}()
for {
fmt.Println("../");
<-channel // Waiting for something to come from the channel
}
}
關(guān)于您的具體問題:
如果一個(gè) goroutine 中有等待,為什么 main goroutine 在等待它?
它不等待它,它可能在通道上等待。
我讀到主 goroutine 需要等待時(shí)間,因?yàn)樵谡{(diào)用 goroutine 后控件會(huì)立即傳回給它。
如果您的 main 沒有在通道上等待(或堆棧在無限循環(huán)中),它已經(jīng)完成并關(guān)閉了應(yīng)用程序。GoRoutines 與主線程一起關(guān)閉(類似于 Java 守護(hù)線程)
為什么goroutines不像java中的主線程和子線程那樣可以并行運(yùn)行?
他們實(shí)際上做(:
- 1 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)