update readme
parent
39d53d5f6a
commit
a4aa96e529
@ -1,3 +1,50 @@
|
||||
# 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