func()

in pkg/sync/pool/pool.go [361:381]


func (p *Pool) updateState() {
	if p.Status() >= StoppingStatus || p.Status() == StoppedStatus {
		return
	}

	var workersIdle = p.state.Processed.Get() == p.state.Queued.Get()
	var emptyQueue = p.state.Queued.Get() == 0
	var workersProcessing = p.state.Queued.Get() > p.state.Processed.Get()

	if workersProcessing {
		p.setStatus(StartedStatus)
	}

	if emptyQueue && workersIdle && p.Status() != IdleStatus {
		p.setStatus(IdleStatus)
	}

	if workersIdle && !emptyQueue && p.Status() != FinishedStatus {
		p.setStatus(FinishedStatus)
	}
}