@itcoder

Как читать файлы в несколько потоков в Linux?

Есть такая задача: лежит 10000 файликов на диске, и их необходимо как можно быстрее переконвертировать, хочется это сделать в много - поточном или процессном подходе
Какие есть ограничения:
1. Мы не должны по 2 раза читать файлик
2. Если поток вдруг завис, нужно как то определить что он завис и потушить его, а дескриптор этого файлика освободить для другого потока
3. При окончании работы всех потоков нужно проверить чтобы никто не остался висеть в памяти.

Интересно как к этой задаче подойти более правильно ? можно ответить на словах без кода. Спасибо.
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
MetaDone
@MetaDone
Хорошо сформулированный вопрос - 50% решения
наверно самый простой способ это gearman.info
тем более если будете использовать php - то есть документация php.net/manual/ru/book.gearman.php
выйдет примерно так:
1. клиент раскидывает задачи воркерам - какие файлы им обрабатывать
2. воркеры получают список файлов из очереди и конвертируют их
2.1 если все вышло - шлют что задание выполнено (php.net/manual/ru/gearmanjob.sendcomplete.php)
2.2 если не получилось - шлют что не вышло (php.net/manual/ru/gearmanjob.sendfail.php)
по третьему вопросу - php.net/manual/ru/gearmanclient.setcompletecallback.php php.net/manual/ru/gearmanclient.setfailcallback.php - так можно будет на клиенте узнать сколько выполнено и провалено заданий
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы