Class: Concurrent::MutexAtomicBoolean
- Inherits:
-
Object
- Object
- Concurrent::MutexAtomicBoolean
- Defined in:
- lib/concurrent/atomic/atomic_boolean.rb
Overview
A boolean value that can be updated atomically. Reads and writes to an atomic boolean and thread-safe and guaranteed to succeed. Reads and writes may block briefly but no explicit locking is required.
Testing with ruby 2.1.2
Testing with Concurrent::MutexAtomicBoolean...
2.790000 0.000000 2.790000 ( 2.791454)
Testing with Concurrent::CAtomicBoolean...
0.740000 0.000000 0.740000 ( 0.740206)
Testing with jruby 1.9.3
Testing with Concurrent::MutexAtomicBoolean...
5.240000 2.520000 7.760000 ( 3.683000)
Testing with Concurrent::JavaAtomicBoolean...
3.340000 0.010000 3.350000 ( 0.855000)
Direct Known Subclasses
Instance Method Summary collapse
-
#false? ⇒ Boolean
Is the current value ‘false`.
-
#initialize(initial = false) ⇒ MutexAtomicBoolean
constructor
Creates a new ‘AtomicBoolean` with the given initial value.
-
#make_false ⇒ Boolean
Explicitly sets the value to false.
-
#make_true ⇒ Boolean
Explicitly sets the value to true.
-
#true? ⇒ Boolean
Is the current value ‘true`.
-
#value ⇒ Boolean
Retrieves the current ‘Boolean` value.
-
#value=(value) ⇒ Boolean
Explicitly sets the value.
Constructor Details
#initialize(initial = false) ⇒ MutexAtomicBoolean
Creates a new ‘AtomicBoolean` with the given initial value.
32 33 34 35 |
# File 'lib/concurrent/atomic/atomic_boolean.rb', line 32 def initialize(initial = false) @value = !!initial @mutex = Mutex.new end |
Instance Method Details
#false? ⇒ Boolean
Is the current value ‘false`
81 82 83 84 85 86 |
# File 'lib/concurrent/atomic/atomic_boolean.rb', line 81 def false? @mutex.lock !@value ensure @mutex.unlock end |
#make_false ⇒ Boolean
Explicitly sets the value to false.
107 108 109 110 111 112 113 114 |
# File 'lib/concurrent/atomic/atomic_boolean.rb', line 107 def make_false @mutex.lock old = @value @value = false old ensure @mutex.unlock end |
#make_true ⇒ Boolean
Explicitly sets the value to true.
93 94 95 96 97 98 99 100 |
# File 'lib/concurrent/atomic/atomic_boolean.rb', line 93 def make_true @mutex.lock old = @value @value = true !old ensure @mutex.unlock end |
#true? ⇒ Boolean
Is the current value ‘true`
69 70 71 72 73 74 |
# File 'lib/concurrent/atomic/atomic_boolean.rb', line 69 def true? @mutex.lock @value ensure @mutex.unlock end |
#value ⇒ Boolean
Retrieves the current ‘Boolean` value.
42 43 44 45 46 47 |
# File 'lib/concurrent/atomic/atomic_boolean.rb', line 42 def value @mutex.lock @value ensure @mutex.unlock end |
#value=(value) ⇒ Boolean
Explicitly sets the value.
56 57 58 59 60 61 62 |
# File 'lib/concurrent/atomic/atomic_boolean.rb', line 56 def value=(value) @mutex.lock @value = !!value @value ensure @mutex.unlock end |