Class: Tomo::Runtime::ConcurrentRubyThreadPool

Inherits:
Object
  • Object
show all
Includes:
Concurrent::Promises::FactoryMethods
Defined in:
lib/tomo/runtime/concurrent_ruby_thread_pool.rb

Instance Method Summary collapse

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

Returns:

  • (Boolean)


38
39
40
# File 'lib/tomo/runtime/concurrent_ruby_thread_pool.rb', line 38

def failure?
  !!failure
end

#postObject



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_completionObject



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