class SmartCore::Engine::Atom

@api public @since 0.7.0

Public Class Methods

new(initial_value = nil) click to toggle source

@param initial_value [Any] @return [void]

@api private @since 0.7.0

# File lib/smart_core/engine/atom.rb, line 11
def initialize(initial_value = nil)
  @value = initial_value
  @barrier = SmartCore::Engine::Lock.new
end

Public Instance Methods

swap() { |value| ... } click to toggle source

@param block [Block] @return [Any]

@api public @since 0.7.0

# File lib/smart_core/engine/atom.rb, line 29
def swap(&block)
  with_barrier { @value = yield(@value) }
end
value() click to toggle source

@return [Any]

@api public @since 0.7.0

# File lib/smart_core/engine/atom.rb, line 20
def value
  with_barrier { @value }
end

Private Instance Methods

with_barrier(&block) click to toggle source

@param block [Block] @return [Any]

@api private @since 0.1.0

# File lib/smart_core/engine/atom.rb, line 40
def with_barrier(&block)
  @barrier.synchronize(&block)
end