Digamos que tengo un bucle en Bash:
for foo in `some-command`
do
do-something $foo
done
do-somethingestá vinculado a la CPU y tengo un procesador de 4 núcleos brillante y agradable. Me gustaría poder ejecutar hasta 4 do-somethinga la vez.
El enfoque ingenuo parece ser:
for foo in `some-command`
do
do-something $foo &
done
Esto ejecutará todos los mensajes de correodo-something electrónico a la vez, pero hay un par de desventajas, principalmente que hacer algo también puede tener algunas E / S significativas que, al ejecutarlas todas a la vez, podrían ralentizarse un poco. El otro problema es que este bloque de código regresa inmediatamente, por lo que no hay forma de hacer otro trabajo cuando todos los do-somethingcorreos electrónicos están terminados.
¿Cómo escribirías este bucle para que siempre haya X do-somethingcorriendo a la vez?