Documentation ¶
Overview ¶
Package singleflight provides a duplicate function call suppression mechanism.
This is a fork of Tailscale's fork of Go's singleflight package which has had several homes in the past:
- https://pkg.go.dev/tailscale.com/util/singleflight
- https://github.com/golang/go/commit/61d3b2db6292581fc07a3767ec23ec94ad6100d1
- https://github.com/golang/groupcache/tree/master/singleflight
- https://pkg.go.dev/golang.org/x/sync/singleflight
The tailscale fork adds generics.
This fork adds contexts.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Group ¶
type Group[K comparable, V any] struct { // contains filtered or unexported fields }
Group represents a class of work and forms a namespace in which units of work can be executed with duplicate suppression.
func (*Group[K, V]) Do ¶
func (g *Group[K, V]) Do(ctx context.Context, key K, fn func(context.Context) (V, error)) (v V, err error, shared bool)
Do executes and returns the results of the given function, making sure that only one execution is in-flight for a given key at a time. If a duplicate comes in, the duplicate caller waits for the original to complete and receives the same results. The return value shared indicates whether v was given to multiple callers.