Hi,
for some time I wanted to do:
WORKERS_COUNT=8;
for((i=0;i<${WORKERS_COUNT};i++)); do
coproc worker$i { worker_code; };
done;
and since lately I got an actual real, production, case where I had to run given number of workers and issue jobs for them (exactly: run N encoders in M co-processes and pass the list of files to encode for each worker on its stdin), I got the attached patch. It does the following:
- expand the name given to coproc
- if it expands to a legal identifier create the coproc
As I have found just now, it addresses the comment:
/* XXX - possibly run Coproc->name through word expansion? */
and also fixes the apparent problem with the creation of co-processes with wicked names, which is currently possible, e.g.:
coproc `well this is strange name` { sleep 64; }
set | grep "this is"
I would also love to see the coproc built-in to support the listing of co-processes by name, with:
coproc -list
which needs a bit of cleaning in the co-process model.
What do you think?
cheers,
pg
P.S.
the names of the list and the word: l and w, respectively, are not in the lines of very good practices, probably I should have chosen something better.