Gentoo Archives: gentoo-dev

From: Mike Frysinger <vapier@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] multiprocessing.eclass: doing parallel work in bash
Date: Tue, 05 Jun 2012 06:11:17
Message-Id: 201206050210.28142.vapier@gentoo.org
In Reply to: Re: [gentoo-dev] multiprocessing.eclass: doing parallel work in bash by Zac Medico
On Sunday 03 June 2012 18:16:30 Zac Medico wrote:
> On 06/02/2012 10:08 PM, Mike Frysinger wrote: > > # @FUNCTION: _multijob_fork # @INTERNAL # @DESCRIPTION: # Do the > > actual book keeping. _multijob_fork() { [[ $# -eq 1 ]] || die > > "incorrect number of arguments" > > > > local ret=0 [[ $1 == "pre" ]] && : $(( ++mj_num_jobs )) > > if [[ ${mj_num_jobs} -ge ${mj_max_jobs} ]] ; then > > multijob_finish_one > > ret=$? > > fi > > [[ $1 == "post" ]] && : $(( ++mj_num_jobs )) > > return ${ret} > > The "pre" logic seems wrong. Consider an initial state of > mj_num_jobs=0 and mj_max_jobs=1. It will increment mj_num_jobs to 1, > so [[ 1 -ge 1 ]] is true, and then call multijob_finish_one even > though no jobs have started yet? Wouldn't that deadlock > multijob_finish_one, as it waits for a reply from a job that doesn't > exist yet?
yes, i inverted the cases in this func -mike

Attachments

File name MIME type
signature.asc application/pgp-signature