Gpool
A golang resource pool which will support connection pool, buffer pool, goroutine pool. Now only support connection pool.
Install / Use
/learn @Broadroad/GpoolREADME
gpool

A golang pool which will support connection pool, buffer pool, goroutine pool. Help developers to use pool easily. Now gpool only support tcp connection pool. It will support other pools soon. And Thanks to https://github.com/fatih/pool, ideas comes from fatih.
Function
- gpool support tcp connection now
- reuse tcp connection in gpool
- get connection from gpool will error when there is no idle connection in gpool
- support block get from gpool when there is no idle connection in gpool with timeout
Todo
- support lazy connect when real borrow conn from gpool
- support buffer pool
- support goroutine pool
Usage
1. install with this command:
go get github.com/broadroad/gpool
2. set the poolConfig:
// create factory to create connection
factory = func() (net.Conn, error) { return net.Dial(network, address) }
// create poolConfig
poolConfig = &PoolConfig{
InitCap: 5,
MaxCap: 30,
Factory: factory,
}
3. create new gpool
// create a new gpool
p, err := NewGPool(poolConfig)
if err != nil {
fmt.Println(err)
}
// release all connection in gpool
defer p.Close()
4. non blocking get, if no idle connection then return error.
// get a connection from gpool, if gpool has no idle connection, it will return error
conn, err := p.Get()
if err != nil {
fmt.Println("Get error: ", err)
}
// return a connection to gpool
defer conn.Close()
5. blocking get, if no idle connection then block until a timeout
5.1 Block until specified timeout
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) //3second timeout
defer cancel()
conn, err := p.BlockingGet(ctx)
if err != nil {
fmt.Println("Get error:", err)
}
// return a connection to gpool
defer conn.Close()
5.2 Block indefinitely
conn, err := p.BlockingGet(nil)
if err != nil {
fmt.Println("Get error:", err)
}
// return a connection to gpool
defer conn.Close()
License
The Apache License 2.0 - see LICENSE for more details
Issue
It will be very pleasure if you give some issue or pr. Feel free to contact tjbroadroad@163.com
Contributor
Related Skills
openhue
339.3kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
339.3kElevenLabs text-to-speech with mac-style say UX.
weather
339.3kGet current weather and forecasts via wttr.in or Open-Meteo
tweakcc
1.5kCustomize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.
