![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
redlord [D7, WinXP]
redlord © (2005-08-07 03:27:00)всем привет
народ нужен совет
в проге работают одновременно несколько потоков они собирают разного рода инфу с датчиков и кидают ее в общий для всех
потоков stringlist
в етоже время основной поток проги выбирает ету инфу
while stringlist.count>0 do
s:=stringlist[0];stringlist.delete(0);
и весе бы ничего но уж очень медленно происходит выборка (удаление нулевой записи приводит к пересортировке всех строк stringlist)
собираюсь stringlist заменить на memorystream
но возможноли в нем организовать подобный алгоритм работы когда вытащенная из него инфа автоматически удаляется ?
и приведет ли ето к увеличению скорости работы ?
Юрий Зотов (2005-08-07 03:53:00) [1]TThreadList.
Джо (2005-08-07 03:50:00) [2]Однако, очень это все будет красиво выглядеть при доступе из разных потоков...
jack128 (2005-08-07 03:45:00) [3]используй не стриг лист, а список.
type
PStringData = ^TStringData;
TStringData = record
s: string;
Next: PStringData;
end;
var
StartItem, EndItem: PStringData;
procedure AddToList(const: string);
var
p: PStringData;
begin
New(p);
p.s := s;
p.Next := nil;
if not Assigned(StartItem) then
StartItem := p;
if Assigned(EndItem) then
EndItem.Next := p;
EndItem := p;
end;
procedure RemoveFirstItem;
var
p: PStringData;
begin
p := StartItem;
if not Assigned(p) then Exit;
StartItem := p.Next;
Dispose(p);
end;
procedure ClearAll;
begin
while Assigned(StartItem) do
RemoveFirstItem;
end;
Джо (2005-08-07 03:39:00) [4]Интересная тема сообщения... Даже отвечать не хочется, все равно - тему удалят.