Dato un canale di lunghezza N, voglio scriverlo solo se non è pieno. Altrimenti lascerò cadere questo pacchetto ed elaborerò il prossimo.Puoi far cadere i pacchetti di Golang sulle scritture anziché sul blocco?
Questo è possibile in GOlang
Dato un canale di lunghezza N, voglio scriverlo solo se non è pieno. Altrimenti lascerò cadere questo pacchetto ed elaborerò il prossimo.Puoi far cadere i pacchetti di Golang sulle scritture anziché sul blocco?
Questo è possibile in GOlang
È possibile utilizzare select
. Esempio:
package main
func main() {
ch := make(chan int, 2)
for i := 0; i < 10; i++ {
select {
case ch <- i:
// process this packet
println(i)
default:
println("full")
// skip the packet and continue
}
}
}
Un po 'dopo il fatto lo so, ma questo è esattamente ciò che viene attuato dal tipo OverflowingChannel
nel pacchetto di supporto che ho scritto. Usa efficacemente il trucco di selezione sopra.