您的位置:首页 > 编程语言 > Go语言

golang的连接池例子

2016-03-02 09:36 429 查看
github.com/jolestar/go-commons-pool


测试代码

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)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: