Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Внизredlord Найти похожие ветки
← →
redlord (2005-08-07 03:27) [0]всем привет
народ нужен совет
в проге работают одновременно несколько потоков они собирают разного рода инфу с датчиков и кидают ее в общий для всех
потоков stringlist
в етоже время основной поток проги выбирает ету инфу
while stringlist.count>0 do
s:=stringlist[0];stringlist.delete(0);
и весе бы ничего но уж очень медленно происходит выборка (удаление нулевой записи приводит к пересортировке всех строк stringlist)
собираюсь stringlist заменить на memorystream
но возможноли в нем организовать подобный алгоритм работы когда вытащенная из него инфа автоматически удаляется ?
и приведет ли ето к увеличению скорости работы ?
← →
Джо © (2005-08-07 03:39) [1]Интересная тема сообщения... Даже отвечать не хочется, все равно - тему удалят.
← →
jack128 © (2005-08-07 03:45) [2]используй не стриг лист, а список.
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:50) [3]Однако, очень это все будет красиво выглядеть при доступе из разных потоков...
← →
Юрий Зотов © (2005-08-07 03:53) [4]TThreadList.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c