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

Вниз

TList vs TThreadList   Найти похожие ветки 

 
дед Маздай ©   (2009-02-04 10:16) [0]

Что использовать в потоке из сабжа? Приватное свойство потока.


 
MBo ©   (2009-02-04 10:36) [1]

задачу опиши, так непонятно


 
Сергей М. ©   (2009-02-04 10:42) [2]


> Приватное свойство потока


Если предполагается, что доступ к этому св-ву будет осуществляться только в контексте данного потока, то достаточно TList


 
Ega23 ©   (2009-02-04 10:48) [3]


> Приватное свойство потока.


Если приватное свойство потока и в нём хранится данные, использующиеся только в это потоке - то TList.
Если к хранящимся данным идёт обращение из разных потоков - то я тоже обёртку над TList предпочту. С методами Lock и Unlock. Что-то типа:

TMyList = class (TList)
private
 FCrit : TRTLCriticalSection;
public
 constructor Create;
 destructor Destroy; override;

 procedure Lock;
 procedure Unlock;
end;

constructor TMyList.Create;
begin
 inherited Create;
 InitializeCriticalSectionAndSpinCount(FCrit, 4000);
end;

destructor TMyList.Destroy;
begin
 DeleteCriticalSection(FCrit);
 inherited;
end;

procedure TMyList.Lock;
begin
 EnterCriticalSection(FCrit);
end;

procedure TMyList.Unlock;
begin
 LeaveCriticalSection(FCrit);
end;


Ну и обращаться к нему:
 list.Lock;
 try
   // Работаем с данными
 finally
   list.Unlock;
 end;


 
дед Маздай ©   (2009-02-04 11:59) [4]


> MBo ©   (04.02.09 10:36) [1]

Что-то, типа, того (как-то так... пока писал сам немного запутался):
(Писал прямо здесь, так что, возможны ошибки, но общий смысл, думаю, ясен)
TSomeClass = Class(TThread)
 private
   FSomeList: array of TSomeSLList;
 public
   property SomeList[Index: Integer]: TSomeSLList read GetSomeList write SetSomeList;
end;

TSomeSLList = Class(TList) // или TThreadList
 public
   // методы сэйва и лоада

// основной поток
 SomeClass := TSomeClass.Create;
 SomeClass.SomeList[0].Item[0].Add...
 SomeClass.SomeList[0].Item[1].Add...
 SomeClass.SomeList[0].Item[2].Add...
 SomeClass.SomeList[0].SaveToFile...

TSomeClass имеет свою очередь сообщений! Работа со свойствами в TSomeClass происходит в крит.секции. Добавляю TSomeSLList... Пытаюсь добавить =)
TSomeSLList еще не написан. Проектирую. ;)


> Сергей М. ©   (04.02.09 10:42) [2]
> Если предполагается

Видимо нет.


> Ega23 ©   (04.02.09 10:48) [3]

Приму к сведению. Спасибо.


 
Сергей М. ©   (2009-02-04 12:06) [5]


> Видимо нет


Ну тогда без синхронизации не обойтись.
Либо TThreadList либо его эквивалент а-ля [3]



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

Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.042 c
2-1234033046
Pavel
2009-02-07 21:57
2009.03.29
Суммирование времени


2-1233415417
Bolodya
2009-01-31 18:23
2009.03.29
работа с XML в потоке


2-1233924528
bioss
2009-02-06 15:48
2009.03.29
Работа с кодировками в Delphi


1-1208325946
hitk
2008-04-16 10:05
2009.03.29
показать scroll в ListView


2-1233786331
Drowsy
2009-02-05 01:25
2009.03.29
Библиотеки на С++ для Дельфи.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский