同时运行多个go例程

同时运行多个go例程,go,Go,我想运行多个围棋程序。我想让它们同时启动。我添加了另一个同步waitGroup,并在go例程的开始部分添加了等待。然而,这并不能使所有的围棋程序同时启动。我应该怎么做才能让多个围棋程序同时开始 package main import ( "flag" "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup routines := flag.Int(

我想运行多个围棋程序。我想让它们同时启动。我添加了另一个同步waitGroup,并在go例程的开始部分添加了等待。然而,这并不能使所有的围棋程序同时启动。我应该怎么做才能让多个围棋程序同时开始

package main

import (
        "flag"
        "fmt"
        "sync"
        "time"
)

func main() {
     var wg sync.WaitGroup
      routines := flag.Int("runs", 100, "routines running")
      flag.Parse()

      wg.Add(*routines)

      for i := 0; i < *routines; i++ {
              go func() {
                      defer wg.Done()
                      t := time.Now()
                      fmt.Printf("%s\n", t)
              }()
      }
      fmt.Println("Waiting To Finish")
      wg.Wait()
主程序包
进口(
“旗帜”
“fmt”
“同步”
“时间”
)
func main(){
var wg sync.WaitGroup
例程:=flag.Int(“运行”,100,“例程运行”)
flag.Parse()
wg.Add(*例程)
对于i:=0;i<*例程;i++{
go func(){
推迟工作组完成()
t:=时间。现在()
fmt.Printf(“%s\n”,t)
}()
}
fmt.Println(“等待完成”)
wg.Wait()

您可以在一个通道上阻塞所有goroutine,并在所有goroutine都被调度后关闭该通道:

start := make(chan struct{})

for i := 0; i < *routines; i++ {
    go func() {
        <-start
        defer wg.Done()
        t := time.Now()
        fmt.Printf("%s\n", t)
    }()
}
fmt.Println("starting")
close(start)
start:=make(chan结构{})
对于i:=0;i<*例程;i++{
go func(){

谢谢你的快速回复。也谢谢你的解释。