From: Stefan Beller Date: Tue, 22 Sep 2015 21:31:04 GMT Subject: Re: [PATCHv3 06/13] run-command: add an asynchronous parallel child processor Message-ID: In-Reply-To: On Tue, Sep 22, 2015 at 12:53 PM, Junio C Hamano wrote: > Stefan Beller 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.