Skip to content

Instantly share code, notes, and snippets.

@benmanns
Created July 11, 2013 19:54
Show Gist options
  • Save benmanns/5978665 to your computer and use it in GitHub Desktop.
Save benmanns/5978665 to your computer and use it in GitHub Desktop.
package main
import (
"log"
"time"
)
func main() {
ch := make(chan int)
go func() {
for {
select {
case ch <- func() int {
log.Printf("reserved")
return 1
}():
default:
log.Printf("waited")
time.Sleep(1 * time.Second)
}
}
}()
time.Sleep(5 * time.Second)
log.Printf("got %d", <-ch)
}
2013/07/11 15:53:25 reserved
2013/07/11 15:53:25 waited
2013/07/11 15:53:26 reserved
2013/07/11 15:53:26 waited
2013/07/11 15:53:27 reserved
2013/07/11 15:53:27 waited
2013/07/11 15:53:28 reserved
2013/07/11 15:53:28 waited
2013/07/11 15:53:29 reserved
2013/07/11 15:53:29 waited
2013/07/11 15:53:30 reserved
2013/07/11 15:53:30 reserved
2013/07/11 15:53:30 waited
2013/07/11 15:53:30 got 1
2013/07/11 15:53:25 waited
2013/07/11 15:53:26 waited
2013/07/11 15:53:27 waited
2013/07/11 15:53:28 waited
2013/07/11 15:53:29 waited
2013/07/11 15:53:30 reserved
2013/07/11 15:53:30 got 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment