Method: Rake::ThreadPool#future
- Defined in:
- lib/rake/thread_pool.rb
#future(*args, &block) ⇒ Object
Creates a future executed by the ThreadPool.
The args are passed to the block when executing (similarly to Thread#new) The return value is an object representing a future which has been created and added to the queue in the pool. Sending #value to the object will sleep the current thread until the future is finished and will return the result (or raise an exception thrown from the future)
33 34 35 36 37 38 39 40 41 |
# File 'lib/rake/thread_pool.rb', line 33 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 |