Форум: "Начинающим";
Текущий архив: 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