Class: Concurrent::MutexAtomic
- Inherits:
-
Object
- Object
- Concurrent::MutexAtomic
- Defined in:
- lib/concurrent/atomic/atomic.rb
Direct Known Subclasses
Instance Method Summary collapse
- #compare_and_set(expect, update) ⇒ Object
-
#initialize(init = nil) ⇒ MutexAtomic
constructor
A new instance of MutexAtomic.
- #modify ⇒ Object
- #value ⇒ Object
- #value=(value) ⇒ Object
Constructor Details
#initialize(init = nil) ⇒ MutexAtomic
Returns a new instance of MutexAtomic.
5 6 7 8 |
# File 'lib/concurrent/atomic/atomic.rb', line 5 def initialize(init = nil) @value = init @mutex = Mutex.new end |
Instance Method Details
#compare_and_set(expect, update) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/concurrent/atomic/atomic.rb', line 32 def compare_and_set(expect, update) @mutex.lock if @value == expect @value = update true else false end ensure @mutex.unlock end |
#modify ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/concurrent/atomic/atomic.rb', line 24 def modify @mutex.lock result = yield @value @value = result ensure @mutex.unlock end |
#value ⇒ Object
10 11 12 13 14 15 |
# File 'lib/concurrent/atomic/atomic.rb', line 10 def value @mutex.lock @value ensure @mutex.unlock end |
#value=(value) ⇒ Object
17 18 19 20 21 22 |
# File 'lib/concurrent/atomic/atomic.rb', line 17 def value=(value) @mutex.lock @value = value ensure @mutex.unlock end |