Method: Concurrent::CAtomicFixnum#update

Defined in:
ext/concurrent-ruby-ext/atomic_fixnum.c

#updateObject



71
72
73
74
75
76
77
78
79
80
# File 'ext/concurrent-ruby-ext/atomic_fixnum.c', line 71

VALUE method_atomic_fixnum_update(VALUE self) {
  VALUE old_value, new_value;
  for (;;) {
    old_value = method_atomic_fixnum_value(self);
    new_value = rb_yield(old_value);
    if (ir_compare_and_set(self, old_value, new_value) == Qtrue) {
      return new_value;
    }
  }
}