Class: Variable::MVar
Overview
Shared variable that can be written multiple times
ignore :reek:InstanceVariableAssumption
Constant Summary
Constants inherited from Variable
Instance Method Summary collapse
-
#initialize(condition_variable:, mutex:, value: EMPTY) ⇒ undefined
constructor
Initialize object.
-
#modify ⇒ Object
Modify value, blocks if empty.
-
#put(value) ⇒ self
Put value, block on full.
Methods inherited from Variable
#read, #take, #take_timeout, #try_put, #with
Constructor Details
#initialize(condition_variable:, mutex:, value: EMPTY) ⇒ undefined
Initialize object
281 282 283 284 |
# File 'lib/variable.rb', line 281 def initialize(condition_variable:, mutex:, value: EMPTY) super @empty = condition_variable.new end |
Instance Method Details
#modify ⇒ Object
Modify value, blocks if empty
303 304 305 306 307 308 |
# File 'lib/variable.rb', line 303 def modify synchronize do wait_full perform_put(yield(@value)) end end |
#put(value) ⇒ self
Put value, block on full
291 292 293 294 295 296 297 298 |
# File 'lib/variable.rb', line 291 def put(value) synchronize do wait(@empty, &method(:empty?)) perform_put(value) end self end |