課程
/后端開發
/Go
/Go并發之魂:Goroutine深入淺出【程序人生中的“米其林三星級”并發實戰】
ch := make(chan int)
// fmt.Println(ch)
ch <- 1
// 輸出channel
go func() {
fmt.Println(<-ch)
}()
2021-08-07
源自:Go并發之魂:Goroutine深入淺出【程序人生中的“米其林三星級”并發實戰】 5-3
正在回答
這是因為ch<- 1 這個操作,是阻塞操作,就是說 遇到了 a<-1 代碼就不走了,什么時候代碼往下走?必須等到ch里面的消息被讀出去才會繼續走
可以簡單改為:
ch?:=?make(chan?int) //?fmt.Println(ch) go?func()?{ ???ch?<-?1 }() //?輸出channel go?func()?{ ???fmt.Println(<-ch) }() time.Sleep(time.Second*2)
慕虎4228555
舉報
深入淺出Go并發核心:Goroutine,斬獲Goroutine面試題。
1 回答為什么B函數里面要寫兩個for循環
2 回答無緩存channel為什么在如下場景會失敗?
1 回答老師您好,請問一下為什么不是流水線形式的?就是A處理完一個element直接通過channel傳給B,然后A繼續處理其他的element,最后在C處進行收集。這樣子不是更能體現并發的好處嗎?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2021-08-16
這是因為ch<- 1 這個操作,是阻塞操作,就是說 遇到了 a<-1 代碼就不走了,什么時候代碼往下走?必須等到ch里面的消息被讀出去才會繼續走
可以簡單改為: