Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 1 2

Локальный массив процедуры/функции


rrrrrr ©   (09.06.17 19:29[20]

Это процедуры отрисовки. GetMem тормоз.

а массив типа это газ.


Sha ©   (09.06.17 19:37[21]

>> тогда сделай массив полем класса потока
> Непотокобезопасно. Только локальный :(

???
В каждом потоке использовать поле класса потока небезопасно???
Это если только лезть к нему из 1000 других потоков, кроме одного потока-владельца.


SergP ©   (09.06.17 21:44[22]

Во. А если сделать так:


var
 Form1: TForm1;
 MAX:integer;
 Bytelen:integer;

implementation

{$R *.dfm}

procedure proc(var A:array of integer);
begin
a[12]:=555;
showmessage(inttostr(a[12]));
end;

procedure DoSomething;
asm
 sub esp,Bytelen
 mov eax,esp
 mov edx,MAX
 call proc
 add esp,Bytelen
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 DoSomething;
end;

initialization
MAX:=40;
Bytelen:=(MAX+1)*sizeof(integer);

end.


?
Так вроде должно работать.


Sha ©   (09.06.17 21:56[23]

> SergP ©   (09.06.17 21:44) [22]

Все несколько сложнее,
см. реализацию этой идеи в исходниках (искать что-то вроде StackAlloc)


dmk ©   (09.06.17 22:11[24]

Проще использовать один глобальный массив, а в процедуру передвать линейный адрес смещения в массиве.


dmk ©   (09.06.17 22:15[25]

>по умолчанию под потоковый стек выделяется всего один мегабайт
У меня пока локальный массив 10,54 Кб. Для 5K хватит.
20,48 Кб для 8K, но я пока таких мониторов не видел.


Inovet ©   (15.06.17 09:48[26]

> [25] dmk ©   (09.06.17 22:15)
> но я пока таких мониторов не видел

Мониторов может быть много, так что не надо на разрешение завязываться. Про поле класса потока ты, похоже, не то что-то понял.


QAZ   (15.06.17 18:54[27]

threadvar


Страницы: 1 2 версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо