|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.02.2017, 11:28 | #1 |
Форумчанин
Регистрация: 31.12.2006
Сообщений: 114
|
Поток + Readln
Подскажите, пытаюсь добавить в мемо в потоке содержимое текстового файла. В итоге получается какая то ерунда, даже если использовать критические секции, либо становиться одно поточным, и отрабатывает нормально, либо много поточным и получается ерунда.. ЗЫ к примеру если синхронизирую переменную ACC все хорошо(в мемо добавляется 10 строчек как нужно).. Как добавить 10 строк без повторений, в многопоточном режиме, спасибо за помощь
Код:
Последний раз редактировалось niva622; 09.02.2017 в 12:11. |
09.02.2017, 12:18 | #2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
да. т.е. несколько (ДВА и более) потоков должны читать ОДИН файл и передавать РАЗНЫЕ строки в один мемо. Вам не кажется это желанием странного? P.S. я не говорю что этого невозможно добиться, но выглядит немного странновато. чтобы не было дублей потоки должны указывать какую строку(номер строки) они добавляют, и иметь проверку на УЖЕ наличие такой строки(с таким номером). и половину времени каждый поток потратит на попытки повторного и потому неуспешного ввода. чтобы уменьшить "бесполезную" работу потоков надо как-то РАЗДЕЛИТЬ работу потоков. к примеру указать что один поток вводит четные(по номеру) строки файла а другой стало быть НЕчетные строки. больше потоков, больше шаг по строкам. НО повторюсь, наличие одного единственного источника данных(файла) и такого же единственного приемника (мемо) только ЗАМЕДЛИТ обработку.
программа — запись алгоритма на языке понятном транслятору
|
|
09.02.2017, 12:36 | #3 |
Форумчанин
Регистрация: 31.12.2006
Сообщений: 114
|
в данном примере действительно 10 строк, но в моей программе размер фала может составлять более 100 мб.. Сейчас программа грузит все эти 100 мб в StringList.. в следствии забирает много ресурсов оперативной памяти..
Последний раз редактировалось niva622; 09.02.2017 в 13:11. |
09.02.2017, 13:31 | #4 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
Грузи "сразу" в Мемо. ресурсов будет меньше. Код:
А зачем они в визуале? кто-то будет читать эту "войну и мир"? (1-й том данного произведения занимает если не изменяет память 913 Кб в формате txt). http://www.programmersforum.ru/showp...5&postcount=52 т.е. ваш файл это свыше 100 томов этого не очень маленького произведения. Цитата:
И для их работы(потоков) причем БЕЗ учета ресурсов потребных для обработки НЕСКОЛЬКИХ копий файла будет немало. Где выгода?
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 09.02.2017 в 13:39. |
||
09.02.2017, 13:36 | #5 |
Форумчанин
Регистрация: 31.12.2006
Сообщений: 114
|
Вот об этом я не знал, но теперь понял что вы имели ввиду, действительно с каждой строчкой текста программе становится тяжелее и тяжелее считывать следующую строку из файла, в итоге 200 потоков превратились в 3-5 максимум)) Спасибо Вам за советы
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Readln timeout | NEoMASTERR | Общие вопросы Delphi | 11 | 29.10.2015 10:09 |
Readln и задержка | Freezy | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 17.04.2011 15:26 |
Поток. Не получается создать поток. Выдает ошибки при запуске | bigory | Общие вопросы по Java, Java SE, Kotlin | 3 | 23.09.2010 00:40 |
Readln | BaJIuK | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 25.06.2010 04:21 |