michal michal - 2 months ago 14
Ruby Question

Does Ruby have atomic variables?

Does Ruby have atomic variables, like

AtomicInteger
or
AtomicBoolean
in Java?

Answer

Here is a gem that might provide what you need (found linked from here). The code is clean and compact enough to quickly understand (it is basically a Mutex, as everyone else has suggested), which should give you a good starting point if you want to write your own Mutex wrapper.

A lightly modified example from github:

require 'atomic'

my_atomic = Atomic.new('')

# set method 1:
my_atomic.update { |v| v + 'hello' }

# set method 2:
begin
  my_atomic.try_update { |v| v + 'world' }
rescue Atomic::ConcurrentUpdateError => cue
  # deal with it (retry, propagate, etc)
end

# access with:
puts my_atomic.value