From a4aa96e529fbba726f2d5049e2849c585c704ad3 Mon Sep 17 00:00:00 2001 From: Chakib Benziane Date: Fri, 7 Dec 2018 17:08:36 +0100 Subject: [PATCH] update readme --- README.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e408aa2..963baac 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,50 @@ # gum -Goroutine unit manager \ No newline at end of file +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 +} + +```