У меня есть огромный текстовый файл с разделителями строк, и я хочу произвести некоторые вычисления для каждой строки. Мне нужно создать многопоточную программу для ее обработки, потому что больше всего времени занимает обработка каждой строки, а не чтение каждой строки. (узкое место заключается в обработке ЦП, а не в вводе-выводе)
Я придумал два варианта:
1) Откройте файл из основного потока, создайте блокировку на дескрипторе файла и передайте дескриптор файла. вокруг рабочих потоков, а затем позволить каждому рабочему доступу для чтения напрямую к файлу
2) Создайте настройку производителя / потребителя, в которой только основной поток имеет прямой доступ для чтения к файлу и передает строки каждому рабочему потоку, используя общий queue
Что нужно знать:
Какой вариант вы бы выбрали и почему?