Categorygithub.com/dmdv/waitgrouptimeout
repositorypackage
1.0.0
Repository: https://github.com/dmdv/waitgrouptimeout.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

WaitGroupTimeout

An enhanced version of the built-in sync.WaitGroup of the Go,
which supports timeout processing and non-blocking status check

package main

import (
	wgt "github.com/dmdv/waitgrouptimeout"
	"time"
)

func main() {
	wg := wgt.New(true)
	wg.Wrap(func() {
		time.Sleep(5 * time.Second)
		println("Hello, world 1!")
	})

	wg.Wrap(func() {
		time.Sleep(5 * time.Second)
		println("Hello, world 2!")
	})

	wg.Start()
	wg.WaitTimeout(2 * time.Second)
	if wg.Finished() {
		println("Finished")
	} else {
		println("Not finished")
	}

	for wg.Finished() != true {
		time.Sleep(1 * time.Second)
		println("Waiting...")
	}
	wg.Wait()
}