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