code: func (s Semaphore) TakeAll() {
  	for i := 0; i < cap(s); i++ {
  		s.Lock()
  	}
  }
docs: // TakeAll blocks until it holds all available semaphore resources. When it
  // returns, the caller owns all of the resources in the semaphore.