You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.0 KiB
1.0 KiB
gum
Go Unit Manager is a simple Goroutine unit manager for GoLang.
Features:
- Scheduling of multiple goroutines.
- Subscribe to
os.Signal
events. - Gracefull shutdown of units
Overview
A unit is a type that implements WorkUnit
interface. The Spawn()
method
of registered units are run in goroutines.
The Manager
handles communication and synchronized shutdown procedure.
Usage
- Create a unit manager
- Implement the
WorkUnit
on your goroutines - Add units to the manager
- Start the manager and wait on it's
Quit
channel
func main() {
// Create a unit manager
manager := gum.NewManager()
// Subscribe to SIGINT
manager.SubscribeTo(os.Interrupt)
// NewWorker returns a type implementing WorkUnit interface unit :=
NewWorker()
// Register the unit with the manager
manager.AddUnit(scheduler)
// Start the manager
go manager.Start()
// Wait for all units to shutdown gracefully through their `Shutdown` method
<-manager.Quit
}