README
¶
atomic

Simple wrappers for primitive types to enforce atomic access.
Installation
$ go get -u go.uber.org/atomic@v1
Legacy Import Path
As of v1.5.0, the import path go.uber.org/atomic
is the only supported way
of using this package. If you are using Go modules, this package will fail to
compile with the legacy import path path github.com/uber-go/atomic
.
We recommend migrating your code to the new import path but if you're unable
to do so, or if your dependencies are still using the old import path, you
will have to add a replace
directive to your go.mod
file downgrading the
legacy import path to an older version.
replace github.com/uber-go/atomic => github.com/uber-go/atomic v1.4.0
You can do so automatically by running the following command.
$ go mod edit -replace github.com/uber-go/atomic=github.com/uber-go/atomic@v1.4.0
Usage
The standard library's sync/atomic
is powerful, but it's easy to forget which
variables must be accessed atomically. go.uber.org/atomic
preserves all the
functionality of the standard library, but wraps the primitive types to
provide a safer, more convenient API.
var atom atomic.Uint32
atom.Store(42)
atom.Sub(2)
atom.CAS(40, 11)
See the documentation for a complete API specification.
Development Status
Stable.
Released under the MIT License.
Documentation
¶
Overview ¶
Package atomic provides simple wrappers around numerics to enforce atomic access.
Index ¶
- type Bool
- type Duration
- func (d *Duration) Add(n time.Duration) time.Duration
- func (x *Duration) CAS(o, n time.Duration) bool
- func (x *Duration) Load() time.Duration
- func (x *Duration) MarshalJSON() ([]byte, error)
- func (x *Duration) Store(v time.Duration)
- func (d *Duration) String() string
- func (d *Duration) Sub(n time.Duration) time.Duration
- func (x *Duration) Swap(o time.Duration) time.Duration
- func (x *Duration) UnmarshalJSON(b []byte) error
- type Error
- type Float64
- func (f *Float64) Add(s float64) float64
- func (x *Float64) CAS(o, n float64) bool
- func (x *Float64) Load() float64
- func (x *Float64) MarshalJSON() ([]byte, error)
- func (x *Float64) Store(v float64)
- func (f *Float64) String() string
- func (f *Float64) Sub(s float64) float64
- func (x *Float64) UnmarshalJSON(b []byte) error
- type Int32
- func (i *Int32) Add(n int32) int32
- func (i *Int32) CAS(old, new int32) bool
- func (i *Int32) Dec() int32
- func (i *Int32) Inc() int32
- func (i *Int32) Load() int32
- func (i *Int32) MarshalJSON() ([]byte, error)
- func (i *Int32) Store(n int32)
- func (i *Int32) String() string
- func (i *Int32) Sub(n int32) int32
- func (i *Int32) Swap(n int32) int32
- func (i *Int32) UnmarshalJSON(b []byte) error
- type Int64
- func (i *Int64) Add(n int64) int64
- func (i *Int64) CAS(old, new int64) bool
- func (i *Int64) Dec() int64
- func (i *Int64) Inc() int64
- func (i *Int64) Load() int64
- func (i *Int64) MarshalJSON() ([]byte, error)
- func (i *Int64) Store(n int64)
- func (i *Int64) String() string
- func (i *Int64) Sub(n int64) int64
- func (i *Int64) Swap(n int64) int64
- func (i *Int64) UnmarshalJSON(b []byte) error
- type String
- type Uint32
- func (i *Uint32) Add(n uint32) uint32
- func (i *Uint32) CAS(old, new uint32) bool
- func (i *Uint32) Dec() uint32
- func (i *Uint32) Inc() uint32
- func (i *Uint32) Load() uint32
- func (i *Uint32) MarshalJSON() ([]byte, error)
- func (i *Uint32) Store(n uint32)
- func (i *Uint32) String() string
- func (i *Uint32) Sub(n uint32) uint32
- func (i *Uint32) Swap(n uint32) uint32
- func (i *Uint32) UnmarshalJSON(b []byte) error
- type Uint64
- func (i *Uint64) Add(n uint64) uint64
- func (i *Uint64) CAS(old, new uint64) bool
- func (i *Uint64) Dec() uint64
- func (i *Uint64) Inc() uint64
- func (i *Uint64) Load() uint64
- func (i *Uint64) MarshalJSON() ([]byte, error)
- func (i *Uint64) Store(n uint64)
- func (i *Uint64) String() string
- func (i *Uint64) Sub(n uint64) uint64
- func (i *Uint64) Swap(n uint64) uint64
- func (i *Uint64) UnmarshalJSON(b []byte) error
- type Value
Examples ¶
Constants ¶
Variables ¶
Functions ¶
Types ¶
type Bool ¶
type Bool struct {
// contains filtered or unexported fields
}
Bool is an atomic type-safe wrapper for bool values.
func (*Bool) MarshalJSON ¶
MarshalJSON encodes the wrapped bool into JSON.
func (*Bool) UnmarshalJSON ¶
UnmarshalJSON decodes a bool from JSON.
type Duration ¶
type Duration struct {
// contains filtered or unexported fields
}
Duration is an atomic type-safe wrapper for time.Duration values.
func (*Duration) MarshalJSON ¶
MarshalJSON encodes the wrapped time.Duration into JSON.
func (*Duration) Sub ¶
Sub atomically subtracts from the wrapped time.Duration and returns the new value.
func (*Duration) UnmarshalJSON ¶
UnmarshalJSON decodes a time.Duration from JSON.
type Error ¶
type Error struct {
// contains filtered or unexported fields
}
Error is an atomic type-safe wrapper for error values.
type Float64 ¶
type Float64 struct {
// contains filtered or unexported fields
}
Float64 is an atomic type-safe wrapper for float64 values.
func (*Float64) MarshalJSON ¶
MarshalJSON encodes the wrapped float64 into JSON.
func (*Float64) UnmarshalJSON ¶
UnmarshalJSON decodes a float64 from JSON.
type Int32 ¶
type Int32 struct {
// contains filtered or unexported fields
}
Int32 is an atomic wrapper around int32.
func (*Int32) MarshalJSON ¶
MarshalJSON encodes the wrapped int32 into JSON.
func (*Int32) UnmarshalJSON ¶
UnmarshalJSON decodes JSON into the wrapped int32.
type Int64 ¶
type Int64 struct {
// contains filtered or unexported fields
}
Int64 is an atomic wrapper around int64.
func (*Int64) MarshalJSON ¶
MarshalJSON encodes the wrapped int64 into JSON.
func (*Int64) UnmarshalJSON ¶
UnmarshalJSON decodes JSON into the wrapped int64.
type String ¶
type String struct {
// contains filtered or unexported fields
}
String is an atomic type-safe wrapper for string values.
func (*String) MarshalText ¶
MarshalText encodes the wrapped string into a textual form.
This makes it encodable as JSON, YAML, XML, and more.
func (*String) UnmarshalText ¶
UnmarshalText decodes text and replaces the wrapped string with it.
This makes it decodable from JSON, YAML, XML, and more.
type Uint32 ¶
type Uint32 struct {
// contains filtered or unexported fields
}
Uint32 is an atomic wrapper around uint32.
func (*Uint32) MarshalJSON ¶
MarshalJSON encodes the wrapped uint32 into JSON.
func (*Uint32) UnmarshalJSON ¶
UnmarshalJSON decodes JSON into the wrapped uint32.
type Uint64 ¶
type Uint64 struct {
// contains filtered or unexported fields
}
Uint64 is an atomic wrapper around uint64.
func (*Uint64) MarshalJSON ¶
MarshalJSON encodes the wrapped uint64 into JSON.
func (*Uint64) UnmarshalJSON ¶
UnmarshalJSON decodes JSON into the wrapped uint64.
type Value ¶
Value shadows the type of the same name from sync/atomic https://godoc.org/sync/atomic#Value
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
internal
|
|
gen-atomicint
gen-atomicint generates an atomic wrapper around an integer type.
|
gen-atomicint generates an atomic wrapper around an integer type. |
gen-atomicwrapper
gen-atomicwrapper generates wrapper types around other atomic types.
|
gen-atomicwrapper generates wrapper types around other atomic types. |