Nice pause/resume. I'll need to remember this.

On Mon, Apr 3, 2023 at 3:14 AM Rob Pike <r...@golang.org> wrote:
>
> Here's an excerpt from a piece of concurrent code I like, an unpublished 
> interactive game of life. The select near the bottom has only two cases but 
> it is perhaps instructive. I leave its analysis to the reader.
>
> -rob
>
>
>    var kbdC chan of rune = ... // events from keyboard
>    var ticker = time.NewTicker(*deltaTFlag)
> ...
>     pauseC := make(chan int)
>     go func() {
>         for {
>             switch <-kbdC {
>             case 'q':
>                 os.Exit(0)
>             case ' ':
>                 pauseC <- 1
>             }
>         }
>     }()
>
>     gen := 0
>     for gen = 1; ; gen++ {
>         b.draw(display, *cellSizeFlag)
>         changed := b.step()
>         if !changed {
>             break
>         }
>         select {
>         case <-ticker.C:
>         case <-pauseC:
>             <-pauseC
>         }
>     }
>     fmt.Fprintln(os.Stderr, "stable after", gen, "generations")
>     select {}
> }
>
> --
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CAOXNBZS11bKz%2B95gUXstgHHrgDRFoTWdm5kmNBriDpoxNz%3DWXQ%40mail.gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAJSxfmKsgSgfxzUYa77V1Ry%2Bo1Z9v6_hXY1Ank22y-SY%3Dc82gg%40mail.gmail.com.

Reply via email to