[Rake-devel] Announcement: Alternate -j implementation

Mark Watson watsonmw at gmail.com
Fri Apr 20 21:33:40 UTC 2012


> 1 - All tasks are implicitly multitask

Yes, in the sense that all tasks can be executed in parallel with other tasks.

Upside parallelism is octagonal to the method
('file'/'directory'/'task') used to define the task.

It has the downside that some tasks may not be suitable for executing
in parallel.  E.g. the dependencies are wrong, or the task itself
incorrectly shares some resource with other tasks (say multiple tasks
modify the same file as an intermediate step during the task
execution).  IMHO, making stuff work in parallel requires thinking
about the problem anyway and often leads to better code.  If one
needed to make something single thread a mutex should do the trick.
So it's not that hard to be a good -j citizen :)

> 2 - There is a cap on the number of concurrent tasks

Yes, this is whatever is set in the -j option.

> 3 - There is a control to create a repeatable single-threaded random invocation of tasks (--randomize[=SEED])

Yes, it's to help people debug rakefile dependencies, as you've
probably figured :)

On 20 April 2012 09:51, Michael Bishop <mbishop at me.com> wrote:
> Quick question for the list:
>
> After reading more about drake, I wanted to summarize the differences for my own understanding.
>
> Differences in drake from rake:
>
> 1 - All tasks are implicitly multitask
> 2 - There is a cap on the number of concurrent tasks
> 3 - There is a control to create a repeatable single-threaded random invocation of tasks (--randomize[=SEED])
>
> Is this correct?
>
> _ michael
>
> _______________________________________________
> Rake-devel mailing list
> Rake-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rake-devel


More information about the Rake-devel mailing list