-
Основой задачи служит л.р. 4 с прошлого полугодия.
Дано число N и текстовые файлы 1.txt, 2.txt, ..., N.txt, каждый из которых содержит одинаковое
количество строк. Разработать программу, которая запускает N потоков. Каждый новый поток,
открывает соответствующий файл для чтения (1-й поток открывает файл 1.txt, 2-й - 2.txt и т.п.). По
запуску последнего потока начинается заполнение файла result.txt. Данный файл заполняют циклически
все потоки программы, сохраняя в нем каждый раз одну строку, последовательно считывая ее из
соответствующего текстового файла. Порядок сохранения соответствует нумерации файлов.
Ни один поток не переходит к записи своей строки, пока пока ВСЕ потоки не считают текущую строку.
Ни один поток не переходит к чтению следующей строки файла, пока ВСЕ
потоки не сохранят предыдущую строку в result.txt.
|
Пример
N = 3
1.txt | 2.txt | 3.txt | result.txt
|
111 222 333
| 4444 5555 6666
| ----- ***** +++++
| 111 4444 ----- 222 5555 ***** 333 6666 +++++
|
|
- Модифицировать предыдущую задачу: Порожденные потоки считывают строку, каждый из своего файла, и объединяют их в одну строку. Мастер-поток дожидается
завершения объединения и сохраняет полученную строку в результирующем файле, после чего процесс продолжается циклически.
|
Пример
N = 3
1.txt | 2.txt | 3.txt | result.txt
|
111 222 333
| 4444 5555 6666
| ----- ***** +++++
| 1114444----- 2225555***** 3336666+++++
|
|