0 / 0 / 0
Регистрация: 17.01.2014
Сообщений: 13
|
||||||
1 | ||||||
Параллельная обработка файлов14.01.2015, 20:35. Показов 4265. Ответов 25
Метки нет (Все метки)
Не понимаю как организовать параллельную обработку файлов в данной программе.
Смысл в том что есть папка в которой идут txt файлы, в этих файлах есть числа, мы считываем из файла число и выводим в консоль рядом с названием файла, а затем считаем сумму всех чисел.
0
|
14.01.2015, 20:35 | |
Ответы с готовыми решениями:
25
Параллельная обработка Чтение строки неограниченной длины и её параллельная обработка Параллельная обработка файлов Параллельная обработка очереди файлов |
Заблокирован
|
|
14.01.2015, 21:09 | 2 |
impowski, когда заходите в папку обнулите счетчик числе в данной папке. При считывании очередного числа из файла, добавляйте к тому самому счетчику. Ну а вывести его нужно, видимо, когда выйдите из этой папки.
0
|
0 / 0 / 0
Регистрация: 17.01.2014
Сообщений: 13
|
|
14.01.2015, 21:12 [ТС] | 3 |
rocknrolla1, я не понял к чему это.
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
14.01.2015, 21:37 | 4 |
impowski, вижу что у тебя подключаются thread.hpp
но где сами потоки? зачем в main ? и зачем смешивать потоки ifstream и низкоуровневые fopen/fclose ?
0
|
0 / 0 / 0
Регистрация: 17.01.2014
Сообщений: 13
|
|
14.01.2015, 21:40 [ТС] | 5 |
Подключается, но я не знаю пока что как его использовать, сделал только sleep как по заданию сказано, мол усыпить текущий поток на 1 секунду. Насчет ifstream я сделал так как знаю, поэтому и спрашиваю насчет потоков.
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
14.01.2015, 22:54 | 6 |
к примеру - имеешь список имен файлов, которые нужно открыть создаешь вектор потоков, передаешь каждому функтор который открывает файл и считывает число. Создавать на каждый файл поток слишком расточительно - тем более что файлов может быть очень много, поэтому пусть функтор принимает диапазон имен файлов, то есть передавать функтору итераторный диапазон. В функторе проходишь по этому диапазону,открываешь каждый файл, считываешь данные. Нужно еще придумать как красиво возвращать считанное значение ассоциированное с именем файла в основной поток. Положим на выходе получится список состоящий из пар имя файла-прочитанное число. Потом их выводишь на экран и суммируешь числа.
Добавлено через 44 секунды + ко всему, 1 секунда = 1000 миллисекунд )
0
|
0 / 0 / 0
Регистрация: 17.01.2014
Сообщений: 13
|
|
14.01.2015, 23:01 [ТС] | 7 |
Кудаив, тут проблема еще в том что у меня нет списка имен файлов, названия любые я их не знаю и программа тоже, то есть я в функцию передаю значение directory_iterator. Потом циклом прохожу по файлам, открываю файлы считываю данные например в вектор, затем вывожу, а потом суммирую, но как мне это все организовать грамотно.
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
15.01.2015, 08:47 | 8 |
а directory_iterator не позволяет получить полный путь до файла? проходишь итератором по директории, составляешь список файлов
0
|
15.01.2015, 09:12 | 9 |
Лол, тебе тоже дали такое тестовое задание? Банально надо определиться с архитектурой проги и от этого танцевать. Перекрытый ввод-вывод, порты завершения, обычные потоки, пулы потоков, OMP - вариантов море.
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
15.01.2015, 10:40 | 10 |
Enno, impowski, а подскажите откуда сие тестовое задание?))
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
15.01.2015, 11:10 | 12 |
0
|
Кудаив
|
15.01.2015, 11:45
#14
|
Не по теме: приду и заберу твое место! ]:->
0
|
15.01.2015, 12:44 | 15 | |||||
Сообщение было отмечено impowski как решение
Решение
Вот вам мой вариант:
Особо не тестил, но должно работать. Добавлено через 53 секунды
2
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
15.01.2015, 12:54 | 16 |
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
15.01.2015, 13:03 | 18 |
для суммы сойдет, но перед этим выводятся пары имя файла - прочитанное значение и если файл не откроется то будет заведомо выведена ложь
0
|
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
|
|
15.01.2015, 13:22 | 20 |
0
|
15.01.2015, 13:22 | |
15.01.2015, 13:22 | |
Помогаю со студенческими работами здесь
20
Параллельная обработка нескольких файлов в потоках, обрабатывается только последний Параллельная обработка изображений Параллельная обработка данных Параллельная обработка односвязных списков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |