Многопоточный доступ к одному и тому же текстовому файлу

У меня есть огромный текстовый файл с разделителями строк, и я хочу произвести некоторые вычисления для каждой строки. Мне нужно создать многопоточную программу для ее обработки, потому что больше всего времени занимает обработка каждой строки, а не чтение каждой строки. (узкое место заключается в обработке ЦП, а не в вводе-выводе)

Я придумал два варианта:

1) Откройте файл из основного потока, создайте блокировку на дескрипторе файла и передайте дескриптор файла. вокруг рабочих потоков, а затем позволить каждому рабочему доступу для чтения напрямую к файлу

2) Создайте настройку производителя / потребителя, в которой только основной поток имеет прямой доступ для чтения к файлу и передает строки каждому рабочему потоку, используя общий queue

Что нужно знать:

  • Меня действительно интересует скорость выполнения этой задачи
  • Каждая строка независима
  • Я работаю над этим на C ++, но думаю, проблема здесь немного независима от языка

Какой вариант вы бы выбрали и почему?

7
задан Alexandros 26 February 2012 в 12:45
поделиться