code: func NewService(th Thumbnailer, timeout time.Duration, maxProcs int) *Service {
  
  	var g *syncutil.Gate
  	if maxProcs > 0 {
  		g = syncutil.NewGate(maxProcs)
  	}
  
  	return &Service{
  		thumbnailer: th,
  		timeout:     timeout,
  		gate:        g,
  	}
  }
docs: // NewService builds a new Service. Zero timeout or maxProcs means no limit.