A JRuby extension/wrapper around the Java 7 Fork/Join framework
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
javalib
lib
src/org/jruby/ext
README.md
build.xml
default.build.properties
forkjoin.gemspec

README.md

forkjoin for JRuby

This is a small extension that wraps the JSR166y "Fork/Join" framework in an efficient way for JRuby.

Example

require 'forkjoin'

pool = ForkJoin::Pool.new

# FORK

# Add a job (a proc) to the pool for each line
map_futures = pool.invoke_all(
  ARGF.each_line.map{|line| ->{line.split.map{|word| [word,1]}}}
)

# Get aggregate results
counts = map_futures.map(&:get).inject({}) {|map, value|
  value.each {|k,v| (map[k] ||= []) << v}
  map
}

# JOIN

# Add a job to the pool for each count in the map
reduced_futures = pool.invoke_all(
  counts.map{|k, vs| ->{[k, vs.size]}}
)

# Print out results (or you could "reduce" some other way)
reduced_futures.map(&:get).each{|value|
  puts "%s %d\n" % value
}