Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type WaitGroup ¶
type WaitGroup struct {
// contains filtered or unexported fields
}
WaitGroup waits for other same processes based key with timeout.
func (*WaitGroup) Add ¶
(*WaitGroup).Add add adds a new caller or if the caller exists increment dups with key.
func (*WaitGroup) Done ¶
(*WaitGroup).Done done cancels the group context or if the caller dups more then zero, decrements the dups with key.
func (*WaitGroup) Join ¶ added in v1.6.4
Join atomically decides leadership for key. It returns nil and registers the caller as the leader (caller must call Done when finished). If a leader already exists, Join returns a channel that closes when the leader finishes; followers must NOT call Done — they never registered as a participant, so calling Done would either over-decrement the dup counter or cancel the leader's context out from under it.
This API closes the Wait-then-Add race in the older Wait/Add sequence: two simultaneous first callers both saw "no leader" and both became leaders, so the dedup didn't actually dedup.