Gentoo Archives: gentoo-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] multiprocessing.eclass: doing parallel work in bash
Date: Sun, 03 Jun 2012 22:17:31
Message-Id: 4FCBE23E.9000208@gentoo.org
In Reply to: Re: [gentoo-dev] multiprocessing.eclass: doing parallel work in bash by Mike Frysinger
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

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? - -- Thanks, Zac -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk/L4j4ACgkQ/ejvha5XGaPyuQCfSHRUHA1KoVc97yRZa8FlF+TS n04An1/c7IQaH4mqUtm8P305WKKDOgvE =EgJz -----END PGP SIGNATURE-----

Replies