package docker // import ( // ) // // // Pool manages a pool of Docker clients. // type Pool struct { // queue chan (backend.Engine) // } // // // NewPool returns a Pool. // func NewPool(engines ...backend.Engine) *Pool { // return &Pool{ // queue: make(chan backend.Engine, len(engines)), // } // } // // // Reserve requests the next available Docker client in the pool. // func (p *Pool) Reserve(c context.Context) backend.Engine { // select { // case <-c.Done(): // case docker := <-p.queue: // return docker // } // return nil // } // // // Release releases the Docker client back to the pool. // func (p *Pool) Release(docker backend.Engine) { // p.queue <- docker // } // pool := docker.Pool( // docker.FromEnvironmentMust(), // docker.FromEnvironmentMust(), // docker.FromEnvironmentMust(), // docker.FromEnvironmentMust(), // ) // // client := pool.Reserve() // defer pool.Release(client)