Skip to content

Instantly share code, notes, and snippets.

@kamal-github kamal-github/sync_pool.go
Last active Jun 19, 2018

What would you like to do?
Pool implementation using buffered channel
// Pool holds Clients.
type Pool struct {
pool chan *Client
// NewPool creates a new pool of Clients.
func NewPool(max int) *Pool {
return &Pool{
pool: make(chan *Client, max),
// Borrow a Client from the pool.
func (p *Pool) Borrow() *Client {
var c *Client
select {
case c = <-p.pool:
c = newClient()
return c
// Return returns a Client to the pool.
func (p *Pool) Return(c *Client) {
select {
case p.pool <- c:
// let it go, let it go...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.