summaryrefslogtreecommitdiff
path: root/lib/rake/multi_task.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rake/multi_task.rb')
-rw-r--r--lib/rake/multi_task.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/rake/multi_task.rb b/lib/rake/multi_task.rb
new file mode 100644
index 00000000000..21c8de732f0
--- /dev/null
+++ b/lib/rake/multi_task.rb
@@ -0,0 +1,16 @@
+module Rake
+
+ # Same as a regular task, but the immediate prerequisites are done in
+ # parallel using Ruby threads.
+ #
+ class MultiTask < Task
+ private
+ def invoke_prerequisites(args, invocation_chain)
+ threads = @prerequisites.collect { |p|
+ Thread.new(p) { |r| application[r, @scope].invoke_with_call_chain(args, invocation_chain) }
+ }
+ threads.each { |t| t.join }
+ end
+ end
+
+end