Задать вопрос

Многопоточная обработка текстового файла?

Здравствуйте! Как можно правильно многопоточно обработать файл, запустив 50 потоков, например. Можно писать различные костыли с счетчиком, и sleep перед запуском каждого потока (самый ненадежный вариант), можно у каждого потока считывать только каждую пятидесятую+1 строку, но тоже к этому варианту много вопросов. Сам вопрос: как распарсить файл в 50 потоков, не считывая строки, обработанные в других потоках?
  • Вопрос задан
  • 237 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
mshak
@mshak
Например так:
один поток читает построчно и полученные сырые значения строк закидывает в очередь на обработку (например BlockingCollection)

до чтения было должно быть создано требуемое множество потоков, которые с помощью метода GetConsumingEnumerable читают из данной blockingCollection и обрабатывают полученные строки
Ответ написан
Комментировать
Harardin
@Harardin
50 потоков, лучше сразу используй Базы данных если много запросов, если не вариант и надо с файлом то тут только как тебе выше написали берешь файл в список, и дальше разбиваешь его по Тредам(потокам).

Опять же если файл большой то его надо будет дробить и т.д. чтобы не было сильной нагрузки на железо. По этому я все же рекомендую БД
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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