Лабораторная 7
Синхронизация параллельных потоков
c помощью технологии OpenMP.

  1. Основой задачи служит л.р. 4 с прошлого полугодия.

    Дано число N и текстовые файлы 1.txt, 2.txt, ..., N.txt, каждый из которых содержит одинаковое количество строк. Разработать программу, которая запускает N потоков. Каждый новый поток, открывает соответствующий файл для чтения (1-й поток открывает файл 1.txt, 2-й - 2.txt и т.п.). По запуску последнего потока начинается заполнение файла result.txt. Данный файл заполняют циклически все потоки программы, сохраняя в нем каждый раз одну строку, последовательно считывая ее из соответствующего текстового файла. Порядок сохранения соответствует нумерации файлов. Ни один поток не переходит к записи своей строки, пока пока ВСЕ потоки не считают текущую строку. Ни один поток не переходит к чтению следующей строки файла, пока ВСЕ потоки не сохранят предыдущую строку в result.txt.

Пример

N = 3
1.txt2.txt3.txtresult.txt
111
222
333
4444
5555
6666
-----
*****
+++++
111
4444
-----
222
5555
*****
333
6666
+++++


  1. Модифицировать предыдущую задачу: Порожденные потоки считывают строку, каждый из своего файла, и объединяют их в одну строку. Мастер-поток дожидается завершения объединения и сохраняет полученную строку в результирующем файле, после чего процесс продолжается циклически.

Пример

N = 3
1.txt2.txt3.txtresult.txt
111
222
333
4444
5555
6666
-----
*****
+++++
1114444-----
2225555*****
3336666+++++