Re: [PATCHv3 06/13] run-command: add an asynchronous parallel child processor
- From
Stefan Beller <sbeller@google.com>
- Date
- Sep 22, 2015, 21:31 UTC
- Message-ID
- <CAGZ79kYwMrpU-gW6FsbH1W4TRPisZH9GJoyZ6hoimXdxz4HCYQ@mail.gmail.com>
- In-Reply-To
- <xmqqtwqm2puk.fsf@gitster.mtv.corp.google.com>
On Tue, Sep 22, 2015 at 12:53 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 14 quoted lines
> Stefan Beller <sbeller@google.com> writes:
>
>> So how would you find out when we are done?
>
> while (1) {
> if (we have available slot)
> ask to start a new one;
> if (nobody is running anymore)
> break;
> collect the output from running ones;
> drain the output from the foreground one;
> cull the finished process;
> }
>Personally I do not like the break; in the middle of the loop, but that's personal preference, I'd guess. I'll also move the condition for (we have available slot) back inside the called function.
So I am thinking about using this in the reroll instead:
run_processes_parallel_start_as_needed(&pp);
while (pp.nr_processes > 0) {
run_processes_parallel_buffer_stderr(&pp);
run_processes_parallel_output(&pp);
run_processes_parallel_collect_finished(&pp);
run_processes_parallel_start_as_needed(&pp);
}This eliminates the need for the flag and also exits the loop just after the possible startup of new processes.