Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.19;
Скачать: CL | DM;

Вниз

Дин. массив в потоке   Найти похожие ветки 

 
Романов Р.В. ©   (2003-12-09 12:04) [0]

Имеется такой класс

TTiList = class
FTiValue: array of Single;
FTiDost: array of Byte;
FCount: Integer;
FDirName: String;
private
function GetTiValue: Single;
public
constructor Create(DirName: string);
procedure Load;
property TiValue: Single read GetTiValue;
end;CODE>

В процедуре Load должен считываться файл в массив FTiValue.
В то же время по значениям массива FTiValue отрисовывается Virtual ListView.
Я хочу сделать чтение данных из файла файла в отдельном потоке.
Для этого нужно объявить
threadvar FTiValue: array of Single;

В хелпе имеется такой текст
Dynamic variables that are ordinarily managed by the compiler—long strings, wide strings, dynamic arrays, variants, and interfaces—can be declared with threadvar, but the compiler does not automatically free the heap-allocated memory created by each thread of execution. If you use these data types in thread variables, it is your responsibility to dispose of their memory. For example,
threadvar S: AnsiString;
S := "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
...
S := ""; // free the memory used by S


Вопрос вот в чем, могу я работать с переменной FTiValue как с обычным динамическим массивом и нужно ли обнулить (задать нулевую длинну) в конце работы с ним?


 
MBo ©   (2003-12-09 12:49) [1]

На мой взгляд, лучше обеспечить блокировку доступа к массиву (например, с помощью критической секции или мьютекса), подобно тому, как сделано в TThreadList


 
Романов Р.В. ©   (2003-12-09 13:09) [2]

А чем это лучше?


 
MBo ©   (2003-12-09 13:22) [3]

Исключается одновременный доступ к нетривиальной структуре данных - с изменяемой длиной, местонахождением в памяти и со счетчиком ссылок.

threadvar же представляет собой копии переменной для каждого потока - в данном случае, насколько я понимаю - нонсенс.



Страницы: 1 вся ветка

Текущий архив: 2003.12.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-62092
Chainik
2003-12-08 17:47
2003.12.19
Как OpenDialog настроить на выбор не файла, а папки?


1-62043
anod
2003-12-04 22:30
2003.12.19
Части имени файла по шаблону


6-62169
Sergey-ZZZ
2003-10-23 18:47
2003.12.19
выполнение команды из программы


1-62137
Jiurasdg45
2003-12-07 15:41
2003.12.19
Свои св-ва в каждой форме?


14-62210
Unknown
2003-11-26 22:33
2003.12.19
Supreme_2 на другом форуме :)