diff --git a/ants.go b/ants.go index 18b3dc8..4ec81fa 100644 --- a/ants.go +++ b/ants.go @@ -123,6 +123,11 @@ func Release() { defaultAntsPool.Release() } +// ReleaseTimeout is like Release but with a timeout, it waits all workers to exit before timing out. +func ReleaseTimeout(timeout time.Duration) error { + return defaultAntsPool.ReleaseTimeout(timeout) +} + // Reboot reboots the default pool. func Reboot() { defaultAntsPool.Reboot() diff --git a/ants_test.go b/ants_test.go index 93bbbea..c216066 100644 --- a/ants_test.go +++ b/ants_test.go @@ -973,3 +973,15 @@ func TestReleaseTimeout(t *testing.T) { err = pf.ReleaseTimeout(2 * time.Second) assert.NoError(t, err) } + +func TestDefaultPoolReleaseTimeout(t *testing.T) { + Reboot() + for i := 0; i < 5; i++ { + _ = Submit(func() { + time.Sleep(time.Second) + }) + } + assert.NotZero(t, Running()) + err := ReleaseTimeout(2 * time.Second) + assert.NoError(t, err) +}