code: func (p *Pool) Start() {
  	p.lock.Lock()
  	defer p.lock.Unlock()
  	p.ctx, p.cancel = context.WithCancel(p.baseCtx)
  	for i := range p.routines {
  		p.waitGroup.Add(1)
  		p.routines[i].stop = make(chan bool, 1)
  		Go(func() {
  			p.routines[i].goroutine(p.routines[i].stop)
  			p.waitGroup.Done()
  		})
  	}
  
  	for _, routine := range p.routinesCtx {
  		p.waitGroup.Add(1)
  		Go(func() {
  			routine(p.ctx)
  			p.waitGroup.Done()
  		})
  	}
  }
docs: // Start starts all stopped routines