初级会员
  • 第 16739 位会员
  • aierui
  • YIXIAO SHI
  • 2018-03-11 23:06:37
  • 37
  • Offline
  • 19 90

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 同类重复问题,可参考 https://studygolang.com/topics/10808
  • 评论了主题 golang控制goroutine数量
    除了楼上采用第三方库用来生成和管理 goroutine 。 也可以通过 sync + chan 来处理。 ``` package main import ( "fmt" "runtime" "sync" "time" ) func main() { goNum := 4 channelNum := 10 ch := make(chan int, 5) var wg sync.WaitGroup for i := 0; i < goNum; i++ { wg.Add(1) // 生成指定数量的 goroutine // 每个 goroutine 接受 chan 数据 go func() { defer wg.Done() for d := range ch { fmt.Printf("index => %d, time => %d \n", d, time.Now().Unix()) //time.Sleep(time.Second * time.Duration(d)) } }() } for i := 0; i < channelNum; i++ { ch <- i fmt.Printf("index => %d, goroutine Num => %d\n", i, runtime.NumGoroutine()) //time.Sleep(time.Second) } close(ch) wg.Wait() } ``` https://play.golang.org/p/GpZbF7UFfP8