module Speculation::Pmap

@private

Public Class Methods

pmap_jruby(coll, &block) click to toggle source
# File lib/speculation/pmap.rb, line 18
def self.pmap_jruby(coll, &block)
  thread_count = [1, Concurrent.processor_count - 1].max
  pool = Concurrent::FixedThreadPool.new(thread_count, :auto_terminate  => true,
                                                       :fallback_policy => :abort)

  coll.
    map { |x| Concurrent::Future.execute(:executor => pool) { block.call(x) } }.
    map { |f| f.value || f.reason }
ensure
  pool.shutdown
end

Public Instance Methods

pmap(coll, &block) click to toggle source
# File lib/speculation/pmap.rb, line 9
def pmap(coll, &block)
  Pmap.pmap_jruby(coll, &block)
end