class Rake::ThreadPool

def future(*args, &block)

result (or raise an exception thrown from the future)
current thread until the future is finished and will return the
pool. Sending #value to the object will sleep the
a future which has been created and added to the queue in the
Thread#new) The return value is an object representing
The args are passed to the block when executing (similarly to

Creates a future executed by the +ThreadPool+.
def future(*args, &block)
  promise = Promise.new(args, &block)
  promise.recorder = lambda { |*stats| stat(*stats) }
  @queue.enq promise
  stat :queued, :item_id => promise.object_id
  start_thread
  promise
end