code: func (p *BufferPool) Put(b []byte) {
  	if p == nil {
  		return
  	}
  
  	p.mu.RLock()
  	defer p.mu.RUnlock()
  
  	if p.closed {
  		return
  	}
  
  	atomic.AddUint32(&p.put, 1)
  
  	pool := p.pool[p.poolNum(cap(b))]
  	select {
  	case pool <- b:
  	default:
  	}
  
  }
docs: // Put adds given buffer to the pool.