You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
540 B
34 lines
540 B
9 years ago
|
// 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)}
|
||
|
}
|