crespo09 发表于 2018-9-20 10:08:56

golang的连接池例子

package main  

  
import (
  

"github.com/jolestar/go-commons-pool"  
"fmt"
  
)
  

  
type MyPoolObject struct {
  
Name string
  
}
  

  
type MyObjectFactory struct {
  
}
  

  
func (f *MyPoolObject) Print() {
  
fmt.Println(f)
  
}
  

  
func (f *MyObjectFactory) MakeObject() (*pool.PooledObject, error) {
  
return pool.NewPooledObject(&MyPoolObject{}), nil
  
}
  

  
func (f *MyObjectFactory) DestroyObject(object *pool.PooledObject) error {
  
//do destroy
  
return nil
  
}
  

  
func (f *MyObjectFactory) ValidateObject(object *pool.PooledObject) bool {
  
//do validate
  
return true
  
}
  

  
func (f *MyObjectFactory) ActivateObject(object *pool.PooledObject) error {
  
//do activate
  
return nil
  
}
  

  
func (f *MyObjectFactory) PassivateObject(object *pool.PooledObject) error {
  
//do passivate
  
return nil
  
}
  

  
func main() {
  
pool := pool.NewObjectPoolWithDefaultConfig(pool.NewPooledObjectFactorySimple(
  
func() (interface{}, error) {
  
return &MyPoolObject{}, nil
  
}))
  
obj, _ := pool.BorrowObject()
  

  
obj.(*MyPoolObject).Name = "1111"
  
obj.(*MyPoolObject).Print()
  

  
pool.ReturnObject(obj)
  
}


页: [1]
查看完整版本: golang的连接池例子