powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
10 сообщений из 135, страница 6 из 6
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907037
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

а какое кол-во потоков в момент вылета?

ну и просто на предмет утечек посмотреть стоит, как там его... ReportmemoryLeaksOnExit что ли ..
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907038
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич

ну по сути код а реальности вот так он выглядит в реальности
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  for i:=0 to InListResultLoad.Count-1 do
    begin
              OpenResultFilesInTread:=TOpenResultFiles.Create(InListResultLoad[i],Integer(InListResultLoad.Objects[i]), False);    //поток считывания результатов
              OpenResultFilesInTread.OnCurentResultLoad:=   CoreShell.OnOpenCurrentFile;    //события выгрузки результатов
              OpenResultFilesInTread.OnSelectedResultLoad:= CoreShell.OnOpenSelectedFile;   //события выгрузки результатов
              OpenResultFilesInTread.Resume;
              OpenResultFilesInTread.WaitFor;    //ждем выполненения
              FreeAndNil(OpenResultFilesInTread);  //убиваем законченный
              sleep(10); ждем всякого на всякий
    end;




Как уже написал, в 7ке вылетает с нехваткой памяти, в 10ке и после многих сотен тысяч операций - работало.

А какой смысл в этом коде, если каждого потока приходится ждать?
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907044
Василий 2
Андрей Игоревич

ну по сути код а реальности вот так он выглядит в реальности
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  for i:=0 to InListResultLoad.Count-1 do
    begin
              OpenResultFilesInTread:=TOpenResultFiles.Create(InListResultLoad[i],Integer(InListResultLoad.Objects[i]), False);    //поток считывания результатов
              OpenResultFilesInTread.OnCurentResultLoad:=   CoreShell.OnOpenCurrentFile;    //события выгрузки результатов
              OpenResultFilesInTread.OnSelectedResultLoad:= CoreShell.OnOpenSelectedFile;   //события выгрузки результатов
              OpenResultFilesInTread.Resume;
              OpenResultFilesInTread.WaitFor;    //ждем выполненения
              FreeAndNil(OpenResultFilesInTread);  //убиваем законченный
              sleep(10); ждем всякого на всякий
    end;




Как уже написал, в 7ке вылетает с нехваткой памяти, в 10ке и после многих сотен тысяч операций - работало.

А какой смысл в этом коде, если каждого потока приходится ждать?

Просто идея запустить все потоки одновременно, в процессе вызывать события и в конце вызвать одну финальную процедуру пока столкнулась с кучей мелких и очень раздражающих проблем, решил пока сделать тупо, но надежно. Просто события вызываемые потоками происходят не в конце их работы, а по мере считывания данных (я определяю изменившиеся данные, считываю, вызываю события, там куча всякого мудрёного кода). Количество сложностей, с которыми я столкнулся, пока охладили желание в такой реализации, потому сделал последовательно но логически понятно, выковыривать код из потоков ради этого как-то не хочется, тем более для других целей я всё ещё использую эти же потоки (общее открытие результатов, групповое по куче расчётов).


В общем потоки, это сложно (для меня), но интересно.
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907045
Zelius
Андрей Игоревич,

а какое кол-во потоков в момент вылета?

ну и просто на предмет утечек посмотреть стоит, как там его... ReportmemoryLeaksOnExit что ли ..

Потоки сразу убиваются, они поочередно запускаются (просто сразу забыл об этом написал), просто, видимо Postmessage забивала всю очередь и выдавало такую ошибку (ну я предполагаю), в delphi 10ке такого нет.
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907140
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

все это звучит странно, не должно быть такой разницы... да и "видимо" не дает гарантий что так и было. ну да ладно, дело хозяйское )
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907171
Zelius
Андрей Игоревич,

все это звучит странно, не должно быть такой разницы... да и "видимо" не дает гарантий что так и было. ну да ладно, дело хозяйское )

"Видимо" это я просто предположил, код 100% идентичный, по сути одни и те же модули запускаю из под разных Делфи.
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907199
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

я так понимаю, вопросы лицензионной чистоты тебя не очень заботят? Лишь бы была дельфя?

Зря ты с семеркой мучаешься. Возьми на руборде портабельную сборку (последняя "рабочая" там была то ли DXE, то ли DXE2). Они не требуют установки, легко регятся идущими в комплекте генераторами, поддерживают юникод и проч."радости". Если надо, могу кинуть ссылкой
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907271
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич
Код: pascal
1.
2.
3.
4.
5.
6.
7.
While 0=1 do 
 begin
   Tread:=TThread.Create(false);
   Tread.WaitFor;
   FreeAndNil(Tread);
   sleep (10);
 end;

Где в этом коде опрос очереди сообщений, чтобы достать ваши PostMessage?
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39907321
_Vasilisk_
Андрей Игоревич
Код: pascal
1.
2.
3.
4.
5.
6.
7.
While 0=1 do 
 begin
   Tread:=TThread.Create(false);
   Tread.WaitFor;
   FreeAndNil(Tread);
   sleep (10);
 end;

Где в этом коде опрос очереди сообщений, чтобы достать ваши PostMessage?

Прием постмесаджей в главном потоке, просто не привел. Та фиг с ним, работает на 10ке (проверил на десятке миллионов циклов) и ладно. Может потом попробую понять почему (хотя будет сложно, если оно работает)
Док
Андрей Игоревич,

я так понимаю, вопросы лицензионной чистоты тебя не очень заботят? Лишь бы была дельфя?

Зря ты с семеркой мучаешься. Возьми на руборде портабельную сборку (последняя "рабочая" там была то ли DXE, то ли DXE2). Они не требуют установки, легко регятся идущими в комплекте генераторами, поддерживают юникод и проч."радости". Если надо, могу кинуть ссылкой

После нового года займусь изучением вопроса.
...
Рейтинг: 0 / 0
Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
    #39918569
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Игоревич,

на штучку наткнулся, есть много переходников
https://tiledb.com/
...
Рейтинг: 0 / 0
10 сообщений из 135, страница 6 из 6
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Много малых вопросов о работе с памятью при работе с динамическими массивами и классами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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