mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-21 17:10:14 +01:00
refactor(concurrency): replaced manual WaitGroup management with new wg.Go() and removed redundant code.
This commit is contained in:
@@ -23,11 +23,9 @@ import (
|
|||||||
func parallel(fns ...func()) {
|
func parallel(fns ...func()) {
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
for _, fn := range fns {
|
for _, fn := range fns {
|
||||||
wg.Add(1)
|
wg.Go(func() {
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
fn()
|
fn()
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import (
|
|||||||
func NewHandler() *gin.Engine {
|
func NewHandler() *gin.Engine {
|
||||||
gin.SetMode("release")
|
gin.SetMode("release")
|
||||||
r := gin.New()
|
r := gin.New()
|
||||||
|
r.Use(NoCache())
|
||||||
r.Use(ErrorHandler())
|
r.Use(ErrorHandler())
|
||||||
r.Use(ErrorLoggingMiddleware())
|
r.Use(ErrorLoggingMiddleware())
|
||||||
|
|
||||||
@@ -113,6 +114,15 @@ func NewHandler() *gin.Engine {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NoCache() gin.HandlerFunc {
|
||||||
|
return func(c *gin.Context) {
|
||||||
|
c.Header("Cache-Control", "no-cache, no-store, must-revalidate")
|
||||||
|
c.Header("Pragma", "no-cache")
|
||||||
|
c.Header("Expires", "0")
|
||||||
|
c.Next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func AuthMiddleware() gin.HandlerFunc {
|
func AuthMiddleware() gin.HandlerFunc {
|
||||||
if !auth.IsEnabled() {
|
if !auth.IsEnabled() {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
|
|||||||
@@ -79,39 +79,29 @@ func getSystemInfo(ctx context.Context, lastResult *SystemInfo) (*SystemInfo, er
|
|||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
|
||||||
if !common.MetricsDisableCPU {
|
if !common.MetricsDisableCPU {
|
||||||
wg.Add(1)
|
wg.Go(func() {
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
errs.Add(s.collectCPUInfo(ctx))
|
errs.Add(s.collectCPUInfo(ctx))
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
if !common.MetricsDisableMemory {
|
if !common.MetricsDisableMemory {
|
||||||
wg.Add(1)
|
wg.Go(func() {
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
errs.Add(s.collectMemoryInfo(ctx))
|
errs.Add(s.collectMemoryInfo(ctx))
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
if !common.MetricsDisableDisk {
|
if !common.MetricsDisableDisk {
|
||||||
wg.Add(1)
|
wg.Go(func() {
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
errs.Add(s.collectDisksInfo(ctx, lastResult))
|
errs.Add(s.collectDisksInfo(ctx, lastResult))
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
if !common.MetricsDisableNetwork {
|
if !common.MetricsDisableNetwork {
|
||||||
wg.Add(1)
|
wg.Go(func() {
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
errs.Add(s.collectNetworkInfo(ctx, lastResult))
|
errs.Add(s.collectNetworkInfo(ctx, lastResult))
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
if !common.MetricsDisableSensors {
|
if !common.MetricsDisableSensors {
|
||||||
wg.Add(1)
|
wg.Go(func() {
|
||||||
go func() {
|
|
||||||
defer wg.Done()
|
|
||||||
errs.Add(s.collectSensorsInfo(ctx))
|
errs.Add(s.collectSensorsInfo(ctx))
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
|
|||||||
@@ -130,10 +130,9 @@ func TestFinishMultipleCalls(t *testing.T) {
|
|||||||
n := 20
|
n := 20
|
||||||
wg.Add(n)
|
wg.Add(n)
|
||||||
for range n {
|
for range n {
|
||||||
go func() {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
|
||||||
task.Finish(nil)
|
task.Finish(nil)
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,15 +62,13 @@ func (m Map[KT, VT]) RangeAllParallel(do func(k KT, v VT)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
|
for k, v := range m.Range {
|
||||||
m.Range(func(k KT, v VT) bool {
|
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func() {
|
go func(k KT, v VT) {
|
||||||
|
defer wg.Done()
|
||||||
do(k, v)
|
do(k, v)
|
||||||
wg.Done()
|
}(k, v)
|
||||||
}()
|
}
|
||||||
return true
|
|
||||||
})
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package functional
|
package functional
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/puzpuzpuz/xsync/v4"
|
"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 {
|
func (set Set[T]) Size() int {
|
||||||
return set.m.Size()
|
return set.m.Size()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,16 +92,15 @@ func NewBidirectionalPipe(ctx context.Context, rw1 io.ReadWriteCloser, rw2 io.Re
|
|||||||
|
|
||||||
func (p BidirectionalPipe) Start() error {
|
func (p BidirectionalPipe) Start() error {
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(2)
|
|
||||||
var srcErr, dstErr error
|
var srcErr, dstErr error
|
||||||
go func() {
|
wg.Go(func() {
|
||||||
srcErr = p.pSrcDst.Start()
|
srcErr = p.pSrcDst.Start()
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}()
|
})
|
||||||
go func() {
|
wg.Go(func() {
|
||||||
dstErr = p.pDstSrc.Start()
|
dstErr = p.pDstSrc.Start()
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}()
|
})
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
return errors.Join(srcErr, dstErr)
|
return errors.Join(srcErr, dstErr)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,14 +12,12 @@ func TestRefCounterAddSub(t *testing.T) {
|
|||||||
rc := NewRefCounter() // Count starts at 1
|
rc := NewRefCounter() // Count starts at 1
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(2)
|
|
||||||
|
|
||||||
rc.Add()
|
rc.Add()
|
||||||
for range 2 {
|
for range 2 {
|
||||||
go func() {
|
wg.Go(func() {
|
||||||
defer wg.Done()
|
|
||||||
rc.Sub()
|
rc.Sub()
|
||||||
}()
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|||||||
Reference in New Issue
Block a user