[Rake-devel] Announcement: Alternate -j implementation
mbishop at me.com
Thu Apr 19 16:28:24 UTC 2012
On Apr 19, 2012, at 11:48 AM, Jim Weirich wrote:
> On Apr 19, 2012, at 10:34 AM, Hongli Lai wrote:
>> Have you also looked at http://drake.rubyforge.org? How does your
>> implementation differ from his?
> Michael can correct me if I'm wrong, but the -j option just limits the number of concurrent tasks used to service the "multitask" task targets. Multitask is an existing rake facility that the -j option makes more usable.
That is exactly right. It only affects Multitask.
Some additional interesting tidbits: There is a queue of blocks that is a class member of Multitask which all Multitask instances use to queue their prerequisites. So, your thread's call to MultiTask#invoke_prerequisites may end up processing prerequisites for another's call to MultiTask#invoke_prerequisites. No matter though, your call won't return until all your prerequisites are completed.
> Drake actually changes the semantics of the regular rake tasks so that they run in parallel.
Thank you for that clarification. I'd only assumed that, given my rather cursory look, and it's nice to have it confirmed.
More information about the Rake-devel