github.com/lingyao2333/mo-zero@v1.4.1/core/threading/workergroup.go (about) 1 package threading 2 3 // A WorkerGroup is used to run given number of workers to process jobs. 4 type WorkerGroup struct { 5 job func() 6 workers int 7 } 8 9 // NewWorkerGroup returns a WorkerGroup with given job and workers. 10 func NewWorkerGroup(job func(), workers int) WorkerGroup { 11 return WorkerGroup{ 12 job: job, 13 workers: workers, 14 } 15 } 16 17 // Start starts a WorkerGroup. 18 func (wg WorkerGroup) Start() { 19 group := NewRoutineGroup() 20 for i := 0; i < wg.workers; i++ { 21 group.RunSafe(wg.job) 22 } 23 group.Wait() 24 }