class Supervision::Atomic

A class responsible for creating threadsafe value objects

Public Class Methods

new(value = nil) click to toggle source

Initialize an Atomic instance

@param [Numeric] value

@api public

# File lib/supervision/atomic.rb, line 12
def initialize(value = nil)
  @mutex = Mutex.new
  @value = value
end

Public Instance Methods

get() click to toggle source

Retrieve value

@api public

# File lib/supervision/atomic.rb, line 20
def get
  @mutex.synchronize { @value }
end
Also aliased as: value
set(new_value) click to toggle source

Set value

@api public

# File lib/supervision/atomic.rb, line 28
def set(new_value)
  @mutex.synchronize { @value = new_value}
end
Also aliased as: value=
update() { |get| ... } click to toggle source

Update value

@api public

# File lib/supervision/atomic.rb, line 36
def update
  set(new_value = yield(get)) if block_given?
  new_value
end
value()
Alias for: get
value=(new_value)
Alias for: set