for i := 0; i < (GoRoutineNum); i++ { sigChannel[i] = make(chanstruct{}) quitSigChannel[i] = make(chanstruct{}) }
mainRoutine := make(chanstruct{})
wg := sync.WaitGroup{}
for i := 0; i < GoRoutineNum; i++ { wg.Add(1) gofunc(idx int) { defer wg.Done() //FOR: for { select { case <-quitSigChannel[idx]: //break FOR goto END case <-sigChannel[idx]: fmt.Printf("goroutine-num:%d %d\n", idx, counter) counter += 1 mainRoutine <- struct{}{} }