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.