Bool is an atomic type-safe wrapper for bool values.
type Bool struct {
// contains filtered or unexported fields
}
func NewBool(val bool) *Bool
NewBool creates a new Bool.
func (x *Bool) CAS(old, new bool) (swapped bool)
CAS is an atomic compare-and-swap for bool values.
Deprecated: Use CompareAndSwap.
func (x *Bool) CompareAndSwap(old, new bool) (swapped bool)
CompareAndSwap is an atomic compare-and-swap for bool values.
func (x *Bool) Load() bool
Load atomically loads the wrapped bool.
func (x *Bool) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped bool into JSON.
func (x *Bool) Store(val bool)
Store atomically stores the passed bool.
func (b *Bool) String() string
String encodes the wrapped value as a string.
func (x *Bool) Swap(val bool) (old bool)
Swap atomically stores the given bool and returns the old value.
func (b *Bool) Toggle() (old bool)
Toggle atomically negates the Boolean and returns the previous value.
func (x *Bool) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes a bool from JSON.
Duration is an atomic type-safe wrapper for time.Duration values.
type Duration struct {
// contains filtered or unexported fields
}
func NewDuration(val time.Duration) *Duration
NewDuration creates a new Duration.
func (d *Duration) Add(delta time.Duration) time.Duration
Add atomically adds to the wrapped time.Duration and returns the new value.
func (x *Duration) CAS(old, new time.Duration) (swapped bool)
CAS is an atomic compare-and-swap for time.Duration values.
Deprecated: Use CompareAndSwap.
func (x *Duration) CompareAndSwap(old, new time.Duration) (swapped bool)
CompareAndSwap is an atomic compare-and-swap for time.Duration values.
func (x *Duration) Load() time.Duration
Load atomically loads the wrapped time.Duration.
func (x *Duration) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped time.Duration into JSON.
func (x *Duration) Store(val time.Duration)
Store atomically stores the passed time.Duration.
func (d *Duration) String() string
String encodes the wrapped value as a string.
func (d *Duration) Sub(delta time.Duration) time.Duration
Sub atomically subtracts from the wrapped time.Duration and returns the new value.
func (x *Duration) Swap(val time.Duration) (old time.Duration)
Swap atomically stores the given time.Duration and returns the old value.
func (x *Duration) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes a time.Duration from JSON.
Error is an atomic type-safe wrapper for error values.
type Error struct {
// contains filtered or unexported fields
}
func NewError(val error) *Error
NewError creates a new Error.
func (x *Error) CompareAndSwap(old, new error) (swapped bool)
CompareAndSwap is an atomic compare-and-swap for error values.
func (x *Error) Load() error
Load atomically loads the wrapped error.
func (x *Error) Store(val error)
Store atomically stores the passed error.
func (x *Error) Swap(val error) (old error)
Swap atomically stores the given error and returns the old value.
Float32 is an atomic type-safe wrapper for float32 values.
type Float32 struct {
// contains filtered or unexported fields
}
func NewFloat32(val float32) *Float32
NewFloat32 creates a new Float32.
func (f *Float32) Add(delta float32) float32
Add atomically adds to the wrapped float32 and returns the new value.
func (f *Float32) CAS(old, new float32) (swapped bool)
CAS is an atomic compare-and-swap for float32 values.
Deprecated: Use CompareAndSwap
func (f *Float32) CompareAndSwap(old, new float32) (swapped bool)
CompareAndSwap is an atomic compare-and-swap for float32 values.
Note: CompareAndSwap handles NaN incorrectly. NaN != NaN using Go's inbuilt operators but CompareAndSwap allows a stored NaN to compare equal to a passed in NaN. This avoids typical CompareAndSwap loops from blocking forever, e.g.,
for { old := atom.Load() new = f(old) if atom.CompareAndSwap(old, new) { break } }
If CompareAndSwap did not match NaN to match, then the above would loop forever.
func (x *Float32) Load() float32
Load atomically loads the wrapped float32.
func (x *Float32) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped float32 into JSON.
func (x *Float32) Store(val float32)
Store atomically stores the passed float32.
func (f *Float32) String() string
String encodes the wrapped value as a string.
func (f *Float32) Sub(delta float32) float32
Sub atomically subtracts from the wrapped float32 and returns the new value.
func (x *Float32) Swap(val float32) (old float32)
Swap atomically stores the given float32 and returns the old value.
func (x *Float32) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes a float32 from JSON.
Float64 is an atomic type-safe wrapper for float64 values.
type Float64 struct {
// contains filtered or unexported fields
}
func NewFloat64(val float64) *Float64
NewFloat64 creates a new Float64.
func (f *Float64) Add(delta float64) float64
Add atomically adds to the wrapped float64 and returns the new value.
func (f *Float64) CAS(old, new float64) (swapped bool)
CAS is an atomic compare-and-swap for float64 values.
Deprecated: Use CompareAndSwap
func (f *Float64) CompareAndSwap(old, new float64) (swapped bool)
CompareAndSwap is an atomic compare-and-swap for float64 values.
Note: CompareAndSwap handles NaN incorrectly. NaN != NaN using Go's inbuilt operators but CompareAndSwap allows a stored NaN to compare equal to a passed in NaN. This avoids typical CompareAndSwap loops from blocking forever, e.g.,
for { old := atom.Load() new = f(old) if atom.CompareAndSwap(old, new) { break } }
If CompareAndSwap did not match NaN to match, then the above would loop forever.
func (x *Float64) Load() float64
Load atomically loads the wrapped float64.
func (x *Float64) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped float64 into JSON.
func (x *Float64) Store(val float64)
Store atomically stores the passed float64.
func (f *Float64) String() string
String encodes the wrapped value as a string.
func (f *Float64) Sub(delta float64) float64
Sub atomically subtracts from the wrapped float64 and returns the new value.
func (x *Float64) Swap(val float64) (old float64)
Swap atomically stores the given float64 and returns the old value.
func (x *Float64) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes a float64 from JSON.
Int32 is an atomic wrapper around int32.
type Int32 struct {
// contains filtered or unexported fields
}
func NewInt32(val int32) *Int32
NewInt32 creates a new Int32.
func (i *Int32) Add(delta int32) int32
Add atomically adds to the wrapped int32 and returns the new value.
func (i *Int32) CAS(old, new int32) (swapped bool)
CAS is an atomic compare-and-swap.
Deprecated: Use CompareAndSwap.
func (i *Int32) CompareAndSwap(old, new int32) (swapped bool)
CompareAndSwap is an atomic compare-and-swap.
func (i *Int32) Dec() int32
Dec atomically decrements the wrapped int32 and returns the new value.
func (i *Int32) Inc() int32
Inc atomically increments the wrapped int32 and returns the new value.
func (i *Int32) Load() int32
Load atomically loads the wrapped value.
func (i *Int32) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped int32 into JSON.
func (i *Int32) Store(val int32)
Store atomically stores the passed value.
func (i *Int32) String() string
String encodes the wrapped value as a string.
func (i *Int32) Sub(delta int32) int32
Sub atomically subtracts from the wrapped int32 and returns the new value.
func (i *Int32) Swap(val int32) (old int32)
Swap atomically swaps the wrapped int32 and returns the old value.
func (i *Int32) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes JSON into the wrapped int32.
Int64 is an atomic wrapper around int64.
type Int64 struct {
// contains filtered or unexported fields
}
func NewInt64(val int64) *Int64
NewInt64 creates a new Int64.
func (i *Int64) Add(delta int64) int64
Add atomically adds to the wrapped int64 and returns the new value.
func (i *Int64) CAS(old, new int64) (swapped bool)
CAS is an atomic compare-and-swap.
Deprecated: Use CompareAndSwap.
func (i *Int64) CompareAndSwap(old, new int64) (swapped bool)
CompareAndSwap is an atomic compare-and-swap.
func (i *Int64) Dec() int64
Dec atomically decrements the wrapped int64 and returns the new value.
func (i *Int64) Inc() int64
Inc atomically increments the wrapped int64 and returns the new value.
func (i *Int64) Load() int64
Load atomically loads the wrapped value.
func (i *Int64) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped int64 into JSON.
func (i *Int64) Store(val int64)
Store atomically stores the passed value.
func (i *Int64) String() string
String encodes the wrapped value as a string.
func (i *Int64) Sub(delta int64) int64
Sub atomically subtracts from the wrapped int64 and returns the new value.
func (i *Int64) Swap(val int64) (old int64)
Swap atomically swaps the wrapped int64 and returns the old value.
func (i *Int64) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes JSON into the wrapped int64.
Pointer is an atomic pointer of type *T.
type Pointer[T any] struct { // contains filtered or unexported fields }
func NewPointer[T any](v *T) *Pointer[T]
NewPointer creates a new Pointer.
func (p *Pointer[T]) CompareAndSwap(old, new *T) (swapped bool)
CompareAndSwap is an atomic compare-and-swap.
func (p *Pointer[T]) Load() *T
Load atomically loads the wrapped value.
func (p *Pointer[T]) Store(val *T)
Store atomically stores the passed value.
func (p *Pointer[T]) String() string
String returns a human readable representation of a Pointer's underlying value.
func (p *Pointer[T]) Swap(val *T) (old *T)
Swap atomically swaps the wrapped pointer and returns the old value.
String is an atomic type-safe wrapper for string values.
type String struct {
// contains filtered or unexported fields
}
func NewString(val string) *String
NewString creates a new String.
func (x *String) CompareAndSwap(old, new string) (swapped bool)
CompareAndSwap is an atomic compare-and-swap for string values.
func (x *String) Load() string
Load atomically loads the wrapped string.
func (s *String) MarshalText() ([]byte, error)
MarshalText encodes the wrapped string into a textual form.
This makes it encodable as JSON, YAML, XML, and more.
func (x *String) Store(val string)
Store atomically stores the passed string.
func (s *String) String() string
String returns the wrapped value.
func (x *String) Swap(val string) (old string)
Swap atomically stores the given string and returns the old value.
func (s *String) UnmarshalText(b []byte) error
UnmarshalText decodes text and replaces the wrapped string with it.
This makes it decodable from JSON, YAML, XML, and more.
Time is an atomic type-safe wrapper for time.Time values.
type Time struct {
// contains filtered or unexported fields
}
func NewTime(val time.Time) *Time
NewTime creates a new Time.
func (x *Time) Load() time.Time
Load atomically loads the wrapped time.Time.
func (x *Time) Store(val time.Time)
Store atomically stores the passed time.Time.
Uint32 is an atomic wrapper around uint32.
type Uint32 struct {
// contains filtered or unexported fields
}
func NewUint32(val uint32) *Uint32
NewUint32 creates a new Uint32.
func (i *Uint32) Add(delta uint32) uint32
Add atomically adds to the wrapped uint32 and returns the new value.
func (i *Uint32) CAS(old, new uint32) (swapped bool)
CAS is an atomic compare-and-swap.
Deprecated: Use CompareAndSwap.
func (i *Uint32) CompareAndSwap(old, new uint32) (swapped bool)
CompareAndSwap is an atomic compare-and-swap.
func (i *Uint32) Dec() uint32
Dec atomically decrements the wrapped uint32 and returns the new value.
func (i *Uint32) Inc() uint32
Inc atomically increments the wrapped uint32 and returns the new value.
func (i *Uint32) Load() uint32
Load atomically loads the wrapped value.
func (i *Uint32) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped uint32 into JSON.
func (i *Uint32) Store(val uint32)
Store atomically stores the passed value.
func (i *Uint32) String() string
String encodes the wrapped value as a string.
func (i *Uint32) Sub(delta uint32) uint32
Sub atomically subtracts from the wrapped uint32 and returns the new value.
func (i *Uint32) Swap(val uint32) (old uint32)
Swap atomically swaps the wrapped uint32 and returns the old value.
func (i *Uint32) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes JSON into the wrapped uint32.
Uint64 is an atomic wrapper around uint64.
type Uint64 struct {
// contains filtered or unexported fields
}
func NewUint64(val uint64) *Uint64
NewUint64 creates a new Uint64.
func (i *Uint64) Add(delta uint64) uint64
Add atomically adds to the wrapped uint64 and returns the new value.
func (i *Uint64) CAS(old, new uint64) (swapped bool)
CAS is an atomic compare-and-swap.
Deprecated: Use CompareAndSwap.
func (i *Uint64) CompareAndSwap(old, new uint64) (swapped bool)
CompareAndSwap is an atomic compare-and-swap.
func (i *Uint64) Dec() uint64
Dec atomically decrements the wrapped uint64 and returns the new value.
func (i *Uint64) Inc() uint64
Inc atomically increments the wrapped uint64 and returns the new value.
func (i *Uint64) Load() uint64
Load atomically loads the wrapped value.
func (i *Uint64) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped uint64 into JSON.
func (i *Uint64) Store(val uint64)
Store atomically stores the passed value.
func (i *Uint64) String() string
String encodes the wrapped value as a string.
func (i *Uint64) Sub(delta uint64) uint64
Sub atomically subtracts from the wrapped uint64 and returns the new value.
func (i *Uint64) Swap(val uint64) (old uint64)
Swap atomically swaps the wrapped uint64 and returns the old value.
func (i *Uint64) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes JSON into the wrapped uint64.
Uintptr is an atomic wrapper around uintptr.
type Uintptr struct {
// contains filtered or unexported fields
}
func NewUintptr(val uintptr) *Uintptr
NewUintptr creates a new Uintptr.
func (i *Uintptr) Add(delta uintptr) uintptr
Add atomically adds to the wrapped uintptr and returns the new value.
func (i *Uintptr) CAS(old, new uintptr) (swapped bool)
CAS is an atomic compare-and-swap.
Deprecated: Use CompareAndSwap.
func (i *Uintptr) CompareAndSwap(old, new uintptr) (swapped bool)
CompareAndSwap is an atomic compare-and-swap.
func (i *Uintptr) Dec() uintptr
Dec atomically decrements the wrapped uintptr and returns the new value.
func (i *Uintptr) Inc() uintptr
Inc atomically increments the wrapped uintptr and returns the new value.
func (i *Uintptr) Load() uintptr
Load atomically loads the wrapped value.
func (i *Uintptr) MarshalJSON() ([]byte, error)
MarshalJSON encodes the wrapped uintptr into JSON.
func (i *Uintptr) Store(val uintptr)
Store atomically stores the passed value.
func (i *Uintptr) String() string
String encodes the wrapped value as a string.
func (i *Uintptr) Sub(delta uintptr) uintptr
Sub atomically subtracts from the wrapped uintptr and returns the new value.
func (i *Uintptr) Swap(val uintptr) (old uintptr)
Swap atomically swaps the wrapped uintptr and returns the old value.
func (i *Uintptr) UnmarshalJSON(b []byte) error
UnmarshalJSON decodes JSON into the wrapped uintptr.
UnsafePointer is an atomic wrapper around unsafe.Pointer.
type UnsafePointer struct {
// contains filtered or unexported fields
}
func NewUnsafePointer(val unsafe.Pointer) *UnsafePointer
NewUnsafePointer creates a new UnsafePointer.
func (p *UnsafePointer) CAS(old, new unsafe.Pointer) (swapped bool)
CAS is an atomic compare-and-swap.
Deprecated: Use CompareAndSwap
func (p *UnsafePointer) CompareAndSwap(old, new unsafe.Pointer) (swapped bool)
CompareAndSwap is an atomic compare-and-swap.
func (p *UnsafePointer) Load() unsafe.Pointer
Load atomically loads the wrapped value.
func (p *UnsafePointer) Store(val unsafe.Pointer)
Store atomically stores the passed value.
func (p *UnsafePointer) Swap(val unsafe.Pointer) (old unsafe.Pointer)
Swap atomically swaps the wrapped unsafe.Pointer and returns the old value.
Value shadows the type of the same name from sync/atomic https://godoc.org/sync/atomic#Value
type Value struct { atomic.Value // contains filtered or unexported fields }
Name | Synopsis |
---|---|
.. |