A value that may be updated atomically.
Only primitive integer types, reference types or nilable reference types can be used with an Atomic type.
Creates an Atomic with the given initial value.
Performs atomic_value += value
.
Performs atomic_value &= value
.
Compares this atomic's value with cmp:
Atomically returns this atomic's value.
Non-atomically returns this atomic's value.
Non-atomically sets this atomic's value to value.
Performs atomic_value = max(atomic_value, value)
.
Performs atomic_value = min(atomic_value, value)
.
Performs atomic_value = ~(atomic_value & value)
.
Performs atomic_value |= value
.
Atomically sets this atomic's value to value.
Performs atomic_value -= value
.
Atomically sets this atomic's value to value.
Performs atomic_value ^= value
.
Struct
Value
Object
Object
Creates an Atomic with the given initial value.
Performs atomic_value += value
. Returns the old value.
atomic = Atomic.new(1) atomic.add(2) # => 1 atomic.get # => 3
Performs atomic_value &= value
. Returns the old value.
atomic = Atomic.new(5) atomic.and(3) # => 5 atomic.get # => 1
Compares this atomic's value with cmp:
{old_value, true}
{old_value, false}
atomic = Atomic.new(1) atomic.compare_and_set(2, 3) # => {1, false} atomic.get # => 1 atomic.compare_and_set(1, 3) # => {1, true} atomic.get # => 3
Atomically returns this atomic's value.
Non-atomically returns this atomic's value.
Non-atomically sets this atomic's value to value. Returns the new value.
atomic = Atomic.new(5) atomic.lazy_set(10) # => 10 atomic.get # => 10
Performs atomic_value = max(atomic_value, value)
. Returns the old value.
atomic = Atomic.new(5) atomic.max(3) # => 5 atomic.get # => 5 atomic.max(10) # => 5 atomic.get # => 10
Performs atomic_value = min(atomic_value, value)
. Returns the old value.
atomic = Atomic.new(5) atomic.min(10) # => 5 atomic.get # => 5 atomic.min(3) # => 5 atomic.get # => 3
Performs atomic_value = ~(atomic_value & value)
. Returns the old value.
atomic = Atomic.new(5) atomic.nand(3) # => 5 atomic.get # => -2
Performs atomic_value |= value
. Returns the old value.
atomic = Atomic.new(5) atomic.or(2) # => 5 atomic.get # => 7
Atomically sets this atomic's value to value. Returns the new value.
atomic = Atomic.new(5) atomic.set(10) # => 10 atomic.get # => 10
Performs atomic_value -= value
. Returns the old value.
atomic = Atomic.new(9) atomic.sub(2) # => 9 atomic.get # => 7
Atomically sets this atomic's value to value. Returns the old value.
atomic = Atomic.new(5) atomic.swap(10) # => 5 atomic.get # => 10
Performs atomic_value ^= value
. Returns the old value.
atomic = Atomic.new(5) atomic.xor(3) # => 5 atomic.get # => 6
© 2012–2020 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.35.1/Atomic.html