Disons que j'ai une boucle en bash:
for foo in `some-command`
do
do-something $foo
done
do-something
est en cpu, et j'ai un beau brillant à 4 cœurs du processeur. J'aimerais être capable d'exécuter jusqu'à 4 do-something
'à la fois.
L'approche naïve semble être:
for foo in `some-command`
do
do-something $foo &
done
Cela permettra d'exécuter tous do-something
s à la fois, mais il y a quelques inconvénients, surtout que quelque chose peut aussi avoir une importante I/O duquel l'exécution de tous à la fois pourrait ralentir un peu. L'autre problème, c'est que ce bloc de code renvoie immédiatement, donc pas moyen de faire d'autres travaux lorsque tous les do-something
s sont finis.
Comment écririez-vous de cette boucle, il y a donc de X do-something
s running à la fois?