refactor(concurrency): replaced manual WaitGroup management with new wg.Go() and removed redundant code.

This commit is contained in:
yusing
2025-08-16 23:14:40 +08:00
parent 7a9b8b3fb9
commit 11af9d107a
8 changed files with 35 additions and 59 deletions

View File

@@ -62,15 +62,13 @@ func (m Map[KT, VT]) RangeAllParallel(do func(k KT, v VT)) {
}
var wg sync.WaitGroup
m.Range(func(k KT, v VT) bool {
for k, v := range m.Range {
wg.Add(1)
go func() {
go func(k KT, v VT) {
defer wg.Done()
do(k, v)
wg.Done()
}()
return true
})
}(k, v)
}
wg.Wait()
}

View File

@@ -1,8 +1,6 @@
package functional
import (
"sync"
"github.com/puzpuzpuz/xsync/v4"
)
@@ -44,20 +42,6 @@ func (set Set[T]) RangeAll(f func(T)) {
})
}
func (set Set[T]) RangeAllParallel(f func(T)) {
var wg sync.WaitGroup
set.Range(func(k T) bool {
wg.Add(1)
go func() {
f(k)
wg.Done()
}()
return true
})
wg.Wait()
}
func (set Set[T]) Size() int {
return set.m.Size()
}

View File

@@ -92,16 +92,15 @@ func NewBidirectionalPipe(ctx context.Context, rw1 io.ReadWriteCloser, rw2 io.Re
func (p BidirectionalPipe) Start() error {
var wg sync.WaitGroup
wg.Add(2)
var srcErr, dstErr error
go func() {
wg.Go(func() {
srcErr = p.pSrcDst.Start()
wg.Done()
}()
go func() {
})
wg.Go(func() {
dstErr = p.pDstSrc.Start()
wg.Done()
}()
})
wg.Wait()
return errors.Join(srcErr, dstErr)
}

View File

@@ -12,14 +12,12 @@ func TestRefCounterAddSub(t *testing.T) {
rc := NewRefCounter() // Count starts at 1
var wg sync.WaitGroup
wg.Add(2)
rc.Add()
for range 2 {
go func() {
defer wg.Done()
wg.Go(func() {
rc.Sub()
}()
})
}
wg.Wait()