Главная страница
    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.07 c
15-1232457697
Ketty
2009-01-20 16:21
2009.03.29
Скачать BBC фильмы на Английском...


15-1232358556
Буратиноо
2009-01-19 12:49
2009.03.29
Перевод на С++


15-1232392090
AlexDan
2009-01-19 22:08
2009.03.29
Новая домашняя страничка ).


6-1196111615
Lamer666
2007-11-27 00:13
2009.03.29
TWebBrowser и предупреждения системы безопастности??


15-1232440471
Рыбба
2009-01-20 11:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский