Digamos que tengo un bucle en Bash:
for foo in `some-command`
do
do-something $foo
done
do-something
está vinculado a la CPU y tengo un procesador de 4 núcleos brillante y agradable. Me gustaría poder ejecutar hasta 4 do-something
a 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-something
correos electrónicos están terminados.
¿Cómo escribirías este bucle para que siempre haya X do-something
corriendo a la vez?