package promise

import "k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/promise"

Index

Types

type WriteOnce

type WriteOnce interface {
	// Get reads the current value of this variable.  If this
	// variable is not set yet then this call blocks until this
	// variable gets a value.
	Get() interface{}

	// Set normally writes a value into this variable, unblocks every
	// goroutine waiting for this variable to have a value, and
	// returns true.  In the unhappy case that this variable is
	// already set, this method returns false without modifying the
	// variable's value.
	Set(interface{}) bool
}

WriteOnce represents a variable that is initially not set and can be set once and is readable. This is the common meaning for "promise".

func NewWriteOnce

func NewWriteOnce(initial interface{}, doneCtx context.Context, doneVal interface{}) WriteOnce

NewWriteOnce makes a new thread-safe WriteOnce.

If `initial` is non-nil then that value is Set at creation time.

If a `Get` is waiting soon after the channel associated with the `doneCtx` becomes selectable (which never happens for the nil channel) then `Set(doneVal)` effectively happens at that time.

Source Files

interface.go promise.go

Version
v0.33.0 (latest)
Published
Apr 23, 2025
Platform
linux/amd64
Imports
2 packages
Last checked
1 hour ago

Tools for package owners.