如果您仔细阅读了工人的守则,您会发现
w.WorkerPool <- w.JobChannel
每次循环开始时,工作人员本身的渠道都会被退回
我在下面复制整个功能:
func (w Worker) Start() { go func() { for { // register the current worker into the worker queue. w.WorkerPool <- w.JobChannel select { case job := <-w.JobChannel: // we have received a work request. if err := job.Payload.UploadToS3(); err != nil { log.Errorf("Error uploading to S3: %s", err.Error()) } case <-w.quit: // we have received a signal to stop return } } }()}


