Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Promise ¶
type Promise interface {
// Returns whether this promise is complete yet, without blocking.
IsComplete() bool
// Returns whether this promise completed with errors, without blocking.
IsError() bool
// Unblock all goroutines awaiting promise completion.
Complete(errors []error)
// Blocks the caller until the promise is marked complete. This function
// is equivalent to invoking AwaitUntil() with a zero-length duration.
// To avoid blocking the caller indefinitely, use AwaitUntil() with a
// non-zero duration instead.
Await() []error
// Blocks the caller until the promise is marked complete, or the supplied
// duration has elapsed. If the promise has not been completed before the
// await times out, this function returns with nonempty errors. If the
// supplied duration has zero length, this await will never time out.
AwaitUntil(timeout time.Duration) []error
// Invokes the supplied function after this promise completes. This function
// is equivalent to invoking AndThenUntil() with a zero-length duration.
// To avoid blocking a goroutine indefinitely, use AndThenUntil() with a
// non-zero duration instead.
AndThen(f func([]error))
// Invokes the supplied function after this promise completes or times out
// after the supplied duration. If the supplied duration has zero length,
// the deferred execution will never time out.
AndThenUntil(timeout time.Duration, f func([]error))
}
A disposable write-once latch, to act as a synchronization barrier to signal completion of some asynchronous operation (successful or otherwise).
Functions that operate on this type (IsComplete, Complete, Await, AwaitUntil) are idempotent and thread-safe.
func NewPromise ¶
func NewPromise() Promise
type RendezVous ¶
type RendezVous interface {
// Returns whether this rendez-vous is complete yet, without blocking.
IsComplete() bool
// Complete process A's half of the rendez-vous, and block until process
// B has done the same.
A()
// Complete process B's half of the rendez-vous, and block until process
// A has done the same.
B()
}
A reciprocal promise that makes it easy for two coordinating routines A and B to wait on each other before proceeding.
func NewRendezVous ¶
func NewRendezVous() RendezVous
Click to show internal directories.
Click to hide internal directories.