Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
Решил разбить чтение больших файлов на небольшие кусочки (чтобы считанные данные не превышали ОЗУ). Например, первый поток читает первые 100 МБ файла, второй поток читает от 100 до 200 МБ, третий от 200 до 300 МБ... Так вот если файлы делить на куски по 100 ГБ (т.е. не делить, потому что все файлы меньше этого размера), то обработка завершается успешно. Но как только я делю их по 100 МБ, то через какое- то время программа вываливается с ошибкой. Кстати, этот же алгоритм чтения файлов долго использовался раньше без деления на кусочки и отлично работал, т.е. ошибка как мне кажется именно в многопоточном чтении одного файла. Как решить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2018, 14:51 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLКстати, этот же алгоритм чтения файлов долго использовался раньше без деления на кусочки и отлично работал, т.е. ошибка как мне кажется именно в многопоточном чтении одного файла. Я правильно понимаю что раньше алгоритм работал однопоточно, а теперь многопоточно? Я бы тут искал проблему, а не в работе с файлом. И ошибку не помешает озвучить вместе со строкой кода, на которой она происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2018, 15:01 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
Dima TЯ правильно понимаю что раньше алгоритм работал однопоточно, а теперь многопоточно? Я бы тут искал проблему, а не в работе с файлом. И ошибку не помешает озвучить вместе со строкой кода, на которой она происходит. Да, однопоточный алгоритм я натравил на куски файлов. Ошибка происходит в стандартной библиотеки и совершенно в другом месте (скорее всего из- за уже произошедшей ошибки, которая себя никак не проявила). Работа с файлов абсолютно таже, что и была, только теперь он читается несколькими потоками одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2018, 16:26 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
алгоритм чтения файла представляет из себя стандартную связку: std::iostream + getline() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2018, 16:28 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLалгоритм чтения файла представляет из себя стандартную связку: std::iostream + getline() Дай угадаю: у тебя один iostream на все потоки?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2018, 17:52 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДай угадаю: у тебя один iostream на все потоки?.. Каждый поток создает свой отдельный независимый поток iostream и с помощью него читает свой диапазон строк файла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2018, 18:17 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
Значит опять же ищи ошибку в другом месте. Для начала можешь внимательно прочитать её текст. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2018, 18:20 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, из топика ясно что у тебя (когда-то) существовал однопоточный алгоритм который нормально работал и который ты переделал в многопоточный и словил баг. С этого надо начинать. Ты что-то нарушил. Далее ты пишешь >> Каждый поток создает свой отдельный независимый поток iostream и с помощью него читает свой диапазон строк файла. Через несколько циклов улучшения этой парадигмы ты изобретёшь свой собственный Hadoop. Вообще, если твоя дисковая подсистема не параллелится то не имеет большого смысла параллелить и чтение файлов на максимальной скорости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 00:10 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLДа, однопоточный алгоритм я натравил на куски файлов. Ошибка происходит в стандартной библиотеки и совершенно в другом месте (скорее всего из- за уже произошедшей ошибки, которая себя никак не проявила). Работа с файлов абсолютно таже, что и была, только теперь он читается несколькими потоками одновременно. + Алгоритм долго работал в многопоточном режиме с РАЗНЫМИ файлами. Но как только я запустил этот алгоритм с кусками одного и того же файла, то появилась ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 11:34 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
Мы сейчас утонем в версиях. Может покажешь исходник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 11:40 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
Лучше не исходник, а простой пример кода демонстрирующий проблему. PS Ты утверждаешь что у тебя криво работает ОС, а это слишком громкое заявление чтобы делать его без доказательств. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2018, 11:53 |
|
||
|
Как разными потоками читать один текстовый файл?
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, я нашел ошибку! Дело в том, что у меня открытые файлы хранятся в специальной коллекции, которую я анализирую на используемость и закрываю более не нужные файлы. Так вот этот механизм надо было переделать при использовании кусков файлов, а я этого не сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2018, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=18&tid=2017825]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 275ms |
| total: | 400ms |

| 0 / 0 |
