Vamos dizer que tenho um loop no Bash:
for foo in `some-command`
do
do-something $foo
done
do-something
é vinculado à CPU e eu tenho um processador de 4 núcleos bem brilhante Eu gostaria de poder executar até 4 de do-something
uma vez.
A abordagem ingênua parece ser:
for foo in `some-command`
do
do-something $foo &
done
Isso executará todos os do-something
s de uma vez, mas existem algumas desvantagens, principalmente que o do-something também pode ter algum I / O significativo que pode ser um pouco mais lento ao executar tudo de uma vez. O outro problema é que esse bloco de código retorna imediatamente, então não há como fazer outro trabalho quando todos os do-something
s estiverem concluídos.
Como você escreveria esse loop para que sempre houvesse do-something
Xs em execução ao mesmo tempo?