最新回答 / 慕虎4228555
這是因為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)
2021-08-07
講師回答 / 凰凰
小伙伴客氣啦!其實流水線形式也是可以的,這里只是提供了一種可能的案例在提問中提到的流水線形式,可能會存在一種,由于頻繁使用channel傳輸數據的形式,而造成一定程度的額外耗時所以我們在設計并發代碼的時候,在某些為了通過并發加速計算的場景下,通常會盡可能地避免使用到channel
2020-11-07