package stm import ( "flag" ) var nFlag = flag.Int( "n", 1_000, "The number of iterations to execute", ) func MainTest() { flag.Parse() n := *nFlag for i := 0; i < n; i++ { c := make(chan int, 1) c <- 0 for i := 0; i < 1000; i++ { go func() { c <- 1 + <-c }() } for { read := <-c if read == 1000 { break } c <- read } } }