с.т.> проще ( и тупее конечно, UNIX way в чистом виде) это когда дочерний поток берет из пула первую свободную задачу ...
Это очередь в чистом виде.
Можно конечно же и так, но в данном случае самая ресурсоемкая часть каждого процесса будет банальное сжатие.
Во всяком случае есть свои плюсы и минусы. В случае с единой очередью, структурно это предполагался связный список, нужно будет сериализовывать доступ к ней, т.е. вводить блокировку к тому же выполнять операции удаления из списка. Проблем это не вызовет, но стоит ли так делать - не очевидно.
с.т.> ps или у тебя эта утилита которая смотрит логи и списки обработки делает - будет регулярно запускаться и подправлять списки?
Запускаться она будет либо по шедулеру, либо по внешнему триггеру (типа пора ...). Журналы же предполагается читать, при их наличии, лишь один раз. Т.е. из потока директории выбирается имя файла, по этому имени происходит поиск в таблице построенной на основе журналов. Был ли это файл обработан или нет и если нет на каком этапе прервались.
Хотя, можно вообще подойти с другой стороны. Как заметил AXT сделать журнал перезаписываемым и удалять из него запись после успешной обработки. С учетом того что процесс, вернее экземпляр, последовательный, то при неожиданной остановки в журнале сохранится файл и этап на котором прервалась обработка.
ЗЫ Саму задачу можно реализовать гораздо проще банальным скриптом на bash, но в данном случае присутствует фактор получения опыта работы с сложными структурами данных. Я как бы не программист, хоть и близок к теме