package
1.3.48
Repository: https://github.com/sandwich-go/boost.git
Documentation: pkg.go.dev

# README

singleflight

重复功能调用抑制

例子

var do1 = func() (interface{}, error) {
    time.Sleep(100 * time.Millisecond)
    return 1, nil
}
var do2 = func() (interface{}, error) {
    time.Sleep(100 * time.Millisecond)
    return 2, nil
}

var key = "key"
var g = New()
var wg sync.WaitGroup
wg.Add(2)
var ret1, ret2 interface{}
go func() {
    ret1, _ = g.Do(key, do1)
    wg.Done()
}()
go func() {
    ret2, _ = g.Do(key, do2)
    wg.Done()
}()
wg.Wait()

fmt.Println(ret1 == ret2)

Output:

true

# Functions

New create a group.

# Structs

Group represents a class of work and forms a namespace in which units of work can be executed with duplicate suppression.