github.com/chenbh/concourse/v6@v6.4.2/worker/counting_wait_group.go (about) 1 package worker 2 3 import "sync" 4 5 type countingWaitGroup struct { 6 sync.WaitGroup 7 8 countMutex sync.Mutex 9 count int 10 } 11 12 func (cwg *countingWaitGroup) Add(n int) { 13 cwg.countMutex.Lock() 14 cwg.WaitGroup.Add(n) 15 cwg.count += n 16 cwg.countMutex.Unlock() 17 } 18 19 func (cwg *countingWaitGroup) Done() { 20 cwg.countMutex.Lock() 21 cwg.WaitGroup.Done() 22 cwg.count-- 23 cwg.countMutex.Unlock() 24 } 25 26 func (cwg *countingWaitGroup) Count() int { 27 cwg.countMutex.Lock() 28 count := cwg.count 29 cwg.countMutex.Unlock() 30 return count 31 }