Здравствуйте! Как можно правильно многопоточно обработать файл, запустив 50 потоков, например. Можно писать различные костыли с счетчиком, и sleep перед запуском каждого потока (самый ненадежный вариант), можно у каждого потока считывать только каждую пятидесятую+1 строку, но тоже к этому варианту много вопросов. Сам вопрос: как распарсить файл в 50 потоков, не считывая строки, обработанные в других потоках?
Например так:
один поток читает построчно и полученные сырые значения строк закидывает в очередь на обработку (например BlockingCollection)
до чтения было должно быть создано требуемое множество потоков, которые с помощью метода GetConsumingEnumerable читают из данной blockingCollection и обрабатывают полученные строки
50 потоков, лучше сразу используй Базы данных если много запросов, если не вариант и надо с файлом то тут только как тебе выше написали берешь файл в список, и дальше разбиваешь его по Тредам(потокам).
Опять же если файл большой то его надо будет дробить и т.д. чтобы не было сильной нагрузки на железо. По этому я все же рекомендую БД