Re: [PATCHv3 06/13] run-command: add an asynchronous parallel child processor
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 22, 2015, 21:41 UTC
- Message-ID
- <xmqqh9mm1690.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <CAGZ79kYwMrpU-gW6FsbH1W4TRPisZH9GJoyZ6hoimXdxz4HCYQ@mail.gmail.com>
Stefan Beller <sbeller@google.com> writes:
Show 30 quoted lines
> On Tue, Sep 22, 2015 at 12:53 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> 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);
> }If you truly think the latter is easier to follow its logic (with the duplicated call to the same function only to avoid break that makes it clear why we are quitting the loop, and without the explicit "start only if we can afford to"), then I have to say that our design tastes are fundamentally incompatible. I have nothing more to add.