собственно сабж , есть прога на делфи многопоточная, и есть stringlist на пару лямов после 50-80к программа просто стопорится, форма не весит(активная) просто нефига не делает подскажите в чем может быть проблема? логика программы такова создание потоков Code: Button1Click for u:=1 to количество do begin; pThread.Create(false); end; конструктор Code: constructor pThread.Create(CreateSuspended: Boolean); begin inherited Create(CreateSuspended); FreeOnTerminate := True; if not CreateSuspended then Resume; end; сам поток Code: procedure pThread.Execute; var begin while Work do TIdTCPClient.Create(nil); конект + проверка FreeAndNil(Tdp); end; есть еще Sync , она вызывается в потоке для обработки ответа
нужен конкретный пример, для данной конструкции я знаю что это не правельно, и поэтому может виснуть я обычно делаю так, создался поток - действие - ответ - убили поток, но так скорость ниже + код большой получается подвернулся пример, который я показал выше, интересно по нему узнать
mazaxaka, вы все так любите скармливать TStringList файлы с лямами строк, а потом удивляться чего так программа тормозит или не так работает. Сделай ты один поток, который будет обслуживать всю работу с файлом, читая кусочками и раздавая по требованию другим потокам данные, а не весь файл сразу, как это делает TStringList
mazaxaka Вы со строками в TStringList что-то делаете? Если используется StringList.Delete(), то возможно из-за этого тормозит.
TStringList грузится при открытии програмы потом в потоке берет TStringList[номер] програма не виснет. а просто стопорится после 50-80к форма активная подозреваю что ето может быть из-за обращение в формам из потока
формы из потоков убрал. в потоке через синхроназацию сохраняется только в файл. но проблемма осталась все таже
Дык ты представляешь, что внутри творится? Там под каждый твой итем, выделяется память. Потом ты с ней работаешь и т.д. Посмотри, загрузку памяти. Кроме того надо посмотреть прородителей TStringList, они не юзают ком объекты? Они тормознутые сами по себе. Я как то на фрилансе делал задачу, обработку 20 млрд записей. Они шли чуть ли не неделю. А я сократил до 4 часов, только потому что, в обход ком объектам exel пошёл.