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

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

  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
}