34 lines
540 B
Go
34 lines
540 B
Go
|
// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
// +build !go1.3
|
||
|
|
||
|
package util
|
||
|
|
||
|
type Pool struct {
|
||
|
pool chan interface{}
|
||
|
}
|
||
|
|
||
|
func (p *Pool) Get() interface{} {
|
||
|
select {
|
||
|
case x := <-p.pool:
|
||
|
return x
|
||
|
default:
|
||
|
return nil
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (p *Pool) Put(x interface{}) {
|
||
|
select {
|
||
|
case p.pool <- x:
|
||
|
default:
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func NewPool(cap int) *Pool {
|
||
|
return &Pool{pool: make(chan interface{}, cap)}
|
||
|
}
|