Class: Supervision::Atomic

Inherits:
Object
  • Object
show all
Defined in:
lib/supervision/atomic.rb

Overview

A class responsible for creating threadsafe value objects

Instance Method Summary collapse

Constructor Details

#initialize(value = nil) ⇒ Atomic

Initialize an Atomic instance

Parameters:

  • value (Numeric) (defaults to: nil)


12
13
14
15
# File 'lib/supervision/atomic.rb', line 12

def initialize(value = nil)
  @mutex = Mutex.new
  @value = value
end

Instance Method Details

#getObject Also known as: value

Retrieve value



20
21
22
# File 'lib/supervision/atomic.rb', line 20

def get
  @mutex.synchronize { @value }
end

#set(new_value) ⇒ Object Also known as: value=

Set value



28
29
30
# File 'lib/supervision/atomic.rb', line 28

def set(new_value)
  @mutex.synchronize { @value = new_value}
end

#updateObject

Update value



36
37
38
39
# File 'lib/supervision/atomic.rb', line 36

def update
  set(new_value = yield(get)) if block_given?
  new_value
end