Module: Concurrent::AtomicNumericCompareAndSetWrapper
- Included in:
- CAtomic, MutexAtomic, RbxAtomic
- Defined in:
- lib/concurrent/atomic_reference/numeric_cas_wrapper.rb
Overview
Special “compare and set” handling of numeric values.
Instance Method Summary collapse
-
#compare_and_set(old_value, new_value) ⇒ Boolean
(also: #compare_and_swap)
Atomically sets the value to the given updated value if the current value == the expected value.
Instance Method Details
#compare_and_set(old_value, new_value) ⇒ Boolean Also known as: compare_and_swap
Atomically sets the value to the given updated value if the current value == the expected value.
that the actual value was not equal to the expected value.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/concurrent/atomic_reference/numeric_cas_wrapper.rb', line 7 def compare_and_set(old_value, new_value) if old_value.kind_of? Numeric while true old = get return false unless old.kind_of? Numeric return false unless old == old_value result = _compare_and_set(old, new_value) return result if result end else _compare_and_set(old_value, new_value) end end |