txthinking / runnergroup

RunnerGroup is like sync.WaitGroup, the diffrence is if one task stops, all will be stopped.

Home Page:https://www.txthinking.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RunnerGroup

GoDoc License: MIT

RunnerGroup is like sync.WaitGroup, the diffrence is if one task stops, all will be stopped.

❤️ A project by txthinking.com

Install

$ go get github.com/txthinking/runnergroup

Example

import (
	"context"
	"log"
	"net/http"
	"time"

	"github.com/txthinking/runnergroup"
)

func Example() {
	g := runnergroup.New()

	s := &http.Server{
		Addr: ":9991",
	}
	g.Add(&runnergroup.Runner{
		Start: func() error {
			return s.ListenAndServe()
		},
		Stop: func() error {
			return s.Shutdown(context.Background())
		},
	})

	s1 := &http.Server{
		Addr: ":9992",
	}
	g.Add(&runnergroup.Runner{
		Start: func() error {
			return s1.ListenAndServe()
		},
		Stop: func() error {
			return s1.Shutdown(context.Background())
		},
	})

	go func() {
		time.Sleep(5 * time.Second)
		log.Println(g.Done())
	}()
	log.Println(g.Wait())
	// Output:
}

License

Licensed under The MIT License

About

RunnerGroup is like sync.WaitGroup, the diffrence is if one task stops, all will be stopped.

https://www.txthinking.com

License:MIT License


Languages

Language:Go 100.0%