github.com/songzhibin97/gkit@v1.2.13/container/pool/example_test.go (about) 1 package pool 2 3 import ( 4 "context" 5 "time" 6 ) 7 8 var pool Pool 9 10 type mock map[string]string 11 12 func (m *mock) Shutdown() error { 13 return nil 14 } 15 16 // getResources: 获取资源,返回的资源对象需要实现 IShutdown 接口,用于资源回收 17 func getResources(c context.Context) (IShutdown, error) { 18 return &mock{}, nil 19 } 20 21 func ExampleNewList() { 22 // NewList(options ...) 23 // 默认配置 24 // pool = NewList() 25 26 // 可供选择配置选项 27 28 // 设置 Pool 连接数, 如果 == 0 则无限制 29 // SetActive(100) 30 31 // 设置最大空闲连接数 32 // SetIdle(20) 33 34 // 设置空闲等待时间 35 // SetIdleTimeout(time.Second) 36 37 // 设置期望等待 38 // SetWait(false,time.Second) 39 40 // 自定义配置 41 pool = NewList( 42 SetActive(100), 43 SetIdle(20), 44 SetIdleTimeout(time.Second), 45 SetWait(false, time.Second)) 46 47 // New需要实例化,否则在 pool.Get() 会无法获取到资源 48 pool.New(getResources) 49 } 50 51 func ExampleList_Get() { 52 v, err := pool.Get(context.TODO()) 53 if err != nil { 54 // 处理错误 55 } 56 // v 获取到的资源 57 _ = v 58 } 59 60 func ExampleList_Put() { 61 v, err := pool.Get(context.TODO()) 62 if err != nil { 63 // 处理错误 64 } 65 66 // Put: 资源回收 67 // forceClose: true 内部帮你调用 Shutdown回收, 否则判断是否是可回收,挂载到list上 68 err = pool.Put(context.TODO(), v, false) 69 if err != nil { 70 // 处理错误 71 } 72 } 73 74 func ExampleList_Shutdown() { 75 // Shutdown 回收资源,关闭所有资源 76 _ = pool.Shutdown() 77 }