powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как разными потоками читать один текстовый файл?
12 сообщений из 12, страница 1 из 1
Как разными потоками читать один текстовый файл?
    #39666572
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил разбить чтение больших файлов на небольшие кусочки (чтобы считанные данные не превышали ОЗУ). Например, первый поток читает первые 100 МБ файла, второй поток читает от 100 до 200 МБ, третий от 200 до 300 МБ...

Так вот если файлы делить на куски по 100 ГБ (т.е. не делить, потому что все файлы меньше этого размера), то обработка завершается успешно. Но как только я делю их по 100 МБ, то через какое- то время программа вываливается с ошибкой. Кстати, этот же алгоритм чтения файлов долго использовался раньше без деления на кусочки и отлично работал, т.е. ошибка как мне кажется именно в многопоточном чтении одного файла.

Как решить?
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39666582
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLКстати, этот же алгоритм чтения файлов долго использовался раньше без деления на кусочки и отлично работал, т.е. ошибка как мне кажется именно в многопоточном чтении одного файла.
Я правильно понимаю что раньше алгоритм работал однопоточно, а теперь многопоточно? Я бы тут искал проблему, а не в работе с файлом.

И ошибку не помешает озвучить вместе со строкой кода, на которой она происходит.
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39666691
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЯ правильно понимаю что раньше алгоритм работал однопоточно, а теперь многопоточно? Я бы тут искал проблему, а не в работе с файлом.

И ошибку не помешает озвучить вместе со строкой кода, на которой она происходит.

Да, однопоточный алгоритм я натравил на куски файлов. Ошибка происходит в стандартной библиотеки и совершенно в другом месте (скорее всего из- за уже произошедшей ошибки, которая себя никак не проявила). Работа с файлов абсолютно таже, что и была, только теперь он читается несколькими потоками одновременно.
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39666694
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
алгоритм чтения файла представляет из себя стандартную связку: std::iostream + getline()
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39666756
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLалгоритм чтения файла представляет из себя стандартную связку: std::iostream + getline()

Дай угадаю: у тебя один iostream на все потоки?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39666773
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovДай угадаю: у тебя один iostream на все потоки?..


Каждый поток создает свой отдельный независимый поток iostream и с помощью него читает свой диапазон строк файла.
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39666774
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит опять же ищи ошибку в другом месте. Для начала можешь внимательно прочитать её текст.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39666853
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL, из топика ясно что у тебя (когда-то) существовал однопоточный алгоритм который нормально работал и
который ты переделал в многопоточный и словил баг. С этого надо начинать. Ты что-то нарушил.

Далее ты пишешь

>> Каждый поток создает свой отдельный независимый поток iostream и с помощью него читает свой диапазон строк файла.

Через несколько циклов улучшения этой парадигмы ты изобретёшь свой собственный Hadoop. Вообще, если твоя дисковая
подсистема не параллелится то не имеет большого смысла параллелить и чтение файлов на максимальной скорости.
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39667038
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlekseySQLДа, однопоточный алгоритм я натравил на куски файлов. Ошибка происходит в стандартной библиотеки и совершенно в другом месте (скорее всего из- за уже произошедшей ошибки, которая себя никак не проявила). Работа с файлов абсолютно таже, что и была, только теперь он читается несколькими потоками одновременно.

+ Алгоритм долго работал в многопоточном режиме с РАЗНЫМИ файлами. Но как только я запустил этот алгоритм с кусками одного и того же файла, то появилась ошибка.
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39667040
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы сейчас утонем в версиях.

Может покажешь исходник?
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39667050
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше не исходник, а простой пример кода демонстрирующий проблему.

PS Ты утверждаешь что у тебя криво работает ОС, а это слишком громкое заявление чтобы делать его без доказательств.
...
Рейтинг: 0 / 0
Как разными потоками читать один текстовый файл?
    #39667531
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, я нашел ошибку!

Дело в том, что у меня открытые файлы хранятся в специальной коллекции, которую я анализирую на используемость и закрываю более не нужные файлы. Так вот этот механизм надо было переделать при использовании кусков файлов, а я этого не сделал.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как разными потоками читать один текстовый файл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]