У меня есть программа, которую я создаю (на C #), и я вижу два подхода ..
1) Менеджер заданий, который ожидает завершения любого количества потоков X, по завершении получает следующий кусок работы, создает новый поток и передает ему этот кусок
или
2) Мы создаем X-потоки для запуска, даем каждому из них по кусочку работы, а когда поток заканчивает работу с чанком, он запрашивает у менеджера заданий дополнительную работу. Если работы больше нет, он спит, а затем снова спрашивает, а сон становится все длиннее.
Эта программа будет запущена и готова, хотя я могу видеть, что она превращается в сервис, который постоянно ищет новые рабочие места.
Каждый блок будет состоять из нескольких идентификаторов данных, вызова базы данных для получения некоторой информации или выполнения операции с идентификатором данных, а затем записи в базу данных информации с идентификатором данных.