Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
Романов Р.В.   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.014 c
14-62247
Карелин Артем
2003-11-24 09:07
2003.12.19
Какие есть средства разработки для микропроцессоров 8052??


1-62019
avk
2003-12-06 18:10
2003.12.19
Округление цифр


1-62041
Мыш
2003-12-06 01:23
2003.12.19
красивый Drag


6-62173
Dmitry V. Averuanov
2003-10-07 14:43
2003.12.19
Как узнать имя хоста по его IP


14-62241
Ru
2003-11-25 12:18
2003.12.19
Ещё на счёт стоимости Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский