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  }