在 Rob Pike關(guān)于 Go Concurrency Patterns的Google IO 演講中,他提供了此代碼作為如何從多個副本服務(wù)器中選擇最快響應(yīng)者的示例:func First(query string, replicas ...Search) Result { c := make(chan Result) searchReplica := func(i int) { c <- replicas[i](query) } for i := range replicas { go searchReplica(i) } return <-c}問題:這不會讓 N-1 個副本 goroutine 阻塞在通道寫入上嗎?在演講結(jié)束后的討論中,一位聽眾似乎在問這個問題,但得到了一種輕松波浪式的回應(yīng)。我傾向于將第三行更改為這樣的:searchReplica := func(i int) { select { case c <- replicas[i](query): default: // non-blocking write }}
1 回答

慕森卡
TA貢獻1806條經(jīng)驗 獲得超8個贊
你是對的。但這并不適合單張幻燈片。他談?wù)摰氖遣l(fā)模式,不一定是執(zhí)行它的代碼。
當(dāng)然,我仍然不會將該代碼放在幻燈片上......
- 1 回答
- 0 關(guān)注
- 168 瀏覽
添加回答
舉報
0/150
提交
取消