Распараллелить цикл while с OpenMP

У меня есть очень большой файл данных, и каждая запись в этом файле данных имеет 4 строки. Я написал очень простую C-программу для анализа файлов этого типа и распечатки некоторой полезной информации. Основная идея программы заключается в следующем.

int main()
{
  char buffer[BUFFER_SIZE];
  while(fgets(buffer, BUFFER_SIZE, stdin))
  {
    fgets(buffer, BUFFER_SIZE, stdin);
    do_some_simple_processing_on_the_second_line_of_the_record(buffer);
    fgets(buffer, BUFFER_SIZE, stdin);
    fgets(buffer, BUFFER_SIZE, stdin);
  }
  print_out_result();
}

Это, конечно, оставляет некоторые детали (здравый смысл / проверка ошибок и т. Д.), Но это не имеет отношения к вопросу.

Программа работает нормально, но файлы данных, с которыми я работаю, огромны. Я решил попытаться ускорить программу, распараллелив цикл с OpenMP. Тем не менее, после небольшого поиска, кажется, что OpenMP может обрабатывать толькоfor циклы, где количество итераций известно заранее. Поскольку я не знаю размер файлов заранее, и даже такие простые команды, какwc -l займет много времени, как я могу распараллелить эту программу?

Ответы на вопрос(3)

Ваш ответ на вопрос