update readme
parent
39d53d5f6a
commit
a4aa96e529
@ -1,3 +1,50 @@
|
|||||||
# gum
|
# gum
|
||||||
|
|
||||||
Goroutine unit manager
|
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
|
||||||
|
|
||||||
|
1. Create a unit manager
|
||||||
|
2. Implement the `WorkUnit` on your goroutines
|
||||||
|
3. Add units to the manager
|
||||||
|
4. 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
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
Loading…
Reference in New Issue