class Concurrent::AtomicMarkableReference

def update

Returns:
  • (Array) - the new value and new mark

Other tags:
    Yieldparam: old_mark - the starting state of marked
    Yieldparam: old_val - the starting value of the atomic reference

Other tags:
    Yield: - Calculate a new value and marked state for the atomic
def update
  loop do
    old_val, old_mark = reference
    new_val, new_mark = yield old_val, old_mark
    if compare_and_set old_val, new_val, old_mark, new_mark
      return immutable_array(new_val, new_mark)
    end
  end
end