Module: Kickplan::Concurrency
Defined Under Namespace
Modules: Initializer
Class Method Summary collapse
Instance Method Summary collapse
- #memoize(name = caller_locations(1,1)[0].label, &block) ⇒ Object
- #synchronize(&block) ⇒ Object
- #unset(name) ⇒ Object
Class Method Details
.included(klass) ⇒ Object
5 6 7 |
# File 'lib/kickplan/concurrency.rb', line 5 def self.included(klass) klass.prepend Initializer end |
Instance Method Details
#memoize(name = caller_locations(1,1)[0].label, &block) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/kickplan/concurrency.rb', line 9 def memoize(name = caller_locations(1,1)[0].label, &block) memo = memoization_variable(name) synchronize do if instance_variable_defined?(memo) instance_variable_get(memo) else instance_variable_set(memo, block.call) end end end |
#synchronize(&block) ⇒ Object
21 22 23 |
# File 'lib/kickplan/concurrency.rb', line 21 def synchronize(&block) @_semaphore.synchronize(&block) end |
#unset(name) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/kickplan/concurrency.rb', line 25 def unset(name) memo = memoization_variable(name) if instance_variable_defined?(memo) remove_instance_variable(memo) end end |