class Rake::MultiTask


parallel using Ruby threads.
Same as a regular task, but the immediate prerequisites are done in

def invoke_prerequisites(task_args, invocation_chain) # :nodoc:

:nodoc:
def invoke_prerequisites(task_args, invocation_chain) # :nodoc:
  invoke_prerequisites_concurrently(task_args, invocation_chain)
end

def invoke_with_call_chain(task_args, invocation_chain)

this task fails.
one in parallel, they will all fail if the first execution of
but has been updated such that if multiple tasks depend on this
circular dependencies. This is largely copied from Rake::Task
Same as invoke, but explicitly pass a call chain to detect
def invoke_with_call_chain(task_args, invocation_chain)
  new_chain = Rake::InvocationChain.append(self, invocation_chain)
  @lock.synchronize do
    begin
      if @already_invoked
        if @invocation_exception
          if application.options.trace
            application.trace "** Previous invocation of #{name} failed #{format_trace_flags}"
          end
          raise @invocation_exception
        else
          return
        end
      end
      if application.options.trace
        application.trace "** Invoke #{name} #{format_trace_flags}"
      end
      @already_invoked = true
      invoke_prerequisites(task_args, new_chain)
      execute(task_args) if needed?
    rescue Exception => ex
      add_chain_to(ex, new_chain)
      @invocation_exception = ex
      raise
    end
  end
end