У меня есть список/очередь из 200 команд, которые мне нужно запустить в оболочке на сервере Linux.
Я хочу иметь только 10 запущенных процессов (из очереди). Для выполнения некоторых процессов потребуется несколько секунд, другие процессы потребуют гораздо больше времени.
Когда процесс завершится, я хочу, чтобы следующая команда была "выскочена" из очереди и выполнена.
Есть ли у кого-нибудь код для решения этой проблемы?
Дальнейшая разработка:
Там должно быть 200 работ, которые нужно выполнить, в какой-то очереди. Я хочу, чтобы не более 10 произведений продолжалось сразу. Когда нить заканчивает кусок работы, он должен задать очередь для следующей работы. Если в очереди больше нет работы, поток должен умереть. Когда все потоки скончались, это означает, что все работы были выполнены.
Фактическая проблема, которую я пытаюсь решить, заключается в использовании imapsync
для синхронизации 200 почтовых ящиков со старого почтового сервера на новый почтовый сервер. У некоторых пользователей большие почтовые ящики и длительная синхронизация tto, у других очень маленькие почтовые ящики и синхронизация.