1 回答

TA貢獻2051條經驗 獲得超10個贊
go select 語句中發(fā)送和接收操作之間是否有優(yōu)先級規(guī)則?
不可以。當case同時準備好一個以上時,隨機執(zhí)行一個。
因為“發(fā)送”操作總是準備好的
不對。當另一側沒有接收任何內容或緩沖通道的緩沖區(qū)已滿時,發(fā)送操作可能只是阻塞(即未準備好)。
還是會發(fā)生先執(zhí)行發(fā)送的情況?
Yes, but you may see no output when this case is selected because your program resumes execution in main and exits immediately before the goTwogoroutine can actually print anything.
如果我希望接收操作具有優(yōu)先級 [...]
select 語句的語義是:“執(zhí)行先準備好的”。如果一種情況必須優(yōu)先于另一種情況,請將另一種情況更改為default(如果沒有其他準備就緒則運行):
select {
case msg1 := <-ch1:
fmt.Println(msg1)
default:
ch2 <- "To goTwo goroutine"
}
- 1 回答
- 0 關注
- 103 瀏覽
添加回答
舉報