github.com/gogf/gf@v1.16.9/.example/container/gpool/gpool_expirefunc.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/gogf/gf/container/gpool" 8 "github.com/gogf/gf/net/gtcp" 9 "github.com/gogf/gf/os/glog" 10 ) 11 12 func main() { 13 // 创建对象复用池,对象过期时间为3000毫秒,并给定创建及销毁方法 14 p := gpool.New(3000*time.Millisecond, func() (interface{}, error) { 15 return gtcp.NewConn("www.baidu.com:80") 16 }, func(i interface{}) { 17 glog.Println("expired") 18 i.(*gtcp.Conn).Close() 19 }) 20 conn, err := p.Get() 21 if err != nil { 22 panic(err) 23 } 24 result, err := conn.(*gtcp.Conn).SendRecv([]byte("HEAD / HTTP/1.1\n\n"), -1) 25 if err != nil { 26 panic(err) 27 } 28 fmt.Println(string(result)) 29 // 丢回池中以便重复使用 30 p.Put(conn) 31 // 等待一定时间观察过期方法调用 32 time.Sleep(4 * time.Second) 33 }