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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.03 c
15-1233223249
desc
2009-01-29 13:00
2009.03.29
Как обновить набор данных ?


2-1234270641
Alex_Ford
2009-02-10 15:57
2009.03.29
Ping - Программно


15-1232442288
123-ий
2009-01-20 12:04
2009.03.29
Delphi + PostgreSQL 8.3


1-1208942275
carmen
2008-04-23 13:17
2009.03.29
эксторт в XML из ExpressQuantumGrid Suite 6.24


2-1233618168
koha!
2009-02-03 02:42
2009.03.29
Вопрос по функции API Openfile()