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.
15 16 17 18 |
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 15 def initialize(size) @executor = ::Concurrent::FixedThreadPool.new(size) @promises = [] end |
Instance Method Details
#failure? ⇒ Boolean
38 39 40 |
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 38 def failure? !!failure end |
#post ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 20 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
31 32 33 34 35 36 |
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 31 def run_to_completion promises_to_wait = promises.dup promises.clear zip_futures_on(executor, *promises_to_wait).value raise failure if failure? end |