Class: Tomo::Runtime::ConcurrentRubyThreadPool
- Inherits:
-
Object
- Object
- Tomo::Runtime::ConcurrentRubyThreadPool
- Includes:
- Concurrent::Promises::FactoryMethods
- Defined in:
- lib/tomo/runtime/concurrent_ruby_thread_pool.rb
Instance Method Summary collapse
- #failure? ⇒ Boolean
-
#initialize(size) ⇒ ConcurrentRubyThreadPool
constructor
A new instance of ConcurrentRubyThreadPool.
- #post ⇒ Object
- #run_to_completion ⇒ Object
Constructor Details
#initialize(size) ⇒ ConcurrentRubyThreadPool
Returns a new instance of ConcurrentRubyThreadPool.
17 18 19 20 |
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 17 def initialize(size) @executor = ::Concurrent::FixedThreadPool.new(size) @promises = [] end |
Instance Method Details
#failure? ⇒ Boolean
40 41 42 |
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 40 def failure? !!failure end |
#post ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 22 def post(...) return if failure? promises << future_on(executor, ...) .on_rejection_using(executor) do |reason| self.failure = reason end nil end |
#run_to_completion ⇒ Object
33 34 35 36 37 38 |
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 33 def run_to_completion promises_to_wait = promises.dup promises.clear zip_futures_on(executor, *promises_to_wait).value raise failure if failure? end |