Предположим, что у меня есть петля в Bash:
for foo in `some-command`
do
   do-something $foo
done
 do-something привязан к cpu, и у меня красивый блестящий 4-ядерный процессор. Я хотел бы иметь возможность запускать до 4 do-something сразу.
Наивный подход выглядит следующим образом:
for foo in `some-command`
do
   do-something $foo &
done
Это будет запускать все do-something сразу, но есть пара недостатков, в основном, что-то-то, возможно, также имеет некоторые значительные операции ввода-вывода, которые все одновременно могут немного замедлить. Другая проблема заключается в том, что этот блок кода немедленно возвращается, поэтому невозможно выполнить другую работу, когда все do-something завершены.
Как бы вы пишете этот цикл, чтобы всегда выполнялось X do-something?