profiling/blocking/efficient.go (15 lines of code) (raw):
package blocking
import "time"
var BufCh = make(chan int, 3)
func EfficientProducer() {
for i := 0; i < 5; i++ {
BufCh <- i
}
close(BufCh)
}
func EfficientConsumer() {
for val := range BufCh {
time.Sleep(time.Second) // slow processing
println("Received:", val)
}
}