使用Select實現無阻塞讀取
可以使用select+default 實現無阻塞讀取,但需要注意default條件處理,避免丟失。
go func() {
select {
case eventChan <- value:
fmt.Println("add chan done")
default:
fmt.Println("default:", value)// receiving from c would block
}
}()
可以使用select+Timeout 超時機制,超過一定時間後就做其他事情,給通道增加讀寫數據的時間
go func() {
timeout := time.NewTimer(time.Microsecond * 500)
select {
case eventChan <- value:
fmt.Println("add chan done")
case <-timeout.C:
fmt.Println("write time out")
}
}()
Last updated