1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
// Copyright 2021 The Go Authors. All rights reserved. Use of this
// source code is governed by a BSD-style license that can be found in
// the LICENSE file.
package a
// A StoppableWaitGroup waits for a collection of goroutines to finish.
type StoppableWaitGroup struct {
// i is the internal counter which can store tolerate negative values
// as opposed the golang's library WaitGroup.
i *int64
}
// NewStoppableWaitGroup returns a new StoppableWaitGroup. When the 'Stop' is
// executed, following 'Add()' calls won't have any effect.
func NewStoppableWaitGroup() *StoppableWaitGroup {
return &StoppableWaitGroup{
i: func() *int64 { i := int64(0); return &i }(),
}
}
|