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

Вниз

Замена указателей на Локал.Перем при работе функции в потоке   Найти похожие ветки 

 
Pcrepair ©   (2013-01-17 14:07) [0]

Добрый день. есть код загрузчика, использующий указатели:

function LoadPage(const Url: String): RawByteString;
var
 HTTP: TIdHTTP;
 HtmlPage: TMemoryStream;
 T:TStringList;
begin
 T:=TStringList.Create;
 HTTP := TIdHTTP.Create(nil);
 try
   HtmlPage := TMemoryStream.Create;
   try
     HTTP.HandleRedirects := True;
     HTTP.Get(Url, HtmlPage); (*получаем данные в поток памяти*)
     (*------------------------------------------*)
     SetLength(Result, HtmlPage.Size);
     Move(HtmlPage.Memory^, Pointer(Result)^, HtmlPage.Size);
     (*------------------------------------------*)
   finally
     FreeAndNil(HtmlPage);
   end;
 finally
   FreeAndNil(HTTP);
   FreeAndNil(T);
 end;
end;


и такой код, использующий локальную переменную Т

function LoadPage(const Url: String): RawByteString;
var
 HTTP: TIdHTTP;
 HtmlPage: TMemoryStream;
 T:TStringList;
begin
 T:=TStringList.Create;
 HTTP := TIdHTTP.Create(nil);
 try
   HtmlPage := TMemoryStream.Create;
   try
     HTTP.HandleRedirects := True;
     HTTP.Get(Url, HtmlPage); (*получаем данные в поток памяти*)
     (*---------------------------*)
       HtmlPage.Position:=0;
       T.LoadFromStream(HtmlPage);
       Result:=T.Text;
     (*---------------------------*)
   finally
     FreeAndNil(HtmlPage);
   end;
 finally
   FreeAndNil(HTTP);
   FreeAndNil(T);
 end;
end;


Внимание! Вопрос:
- какой вариант функции предпочтительнее для использования в потоке (многопоточная загрузка страниц), учитывая использование памяти.
- не будет ли в первом варианте вероятности использования одних и тех же сегментов памяти разными потоками


 
sniknik ©   (2013-01-17 14:17) [1]

> - какой вариант функции предпочтительнее
Result:= HTTP.Get(Url); (*получаем данные в поток памяти*)

> - не будет ли в первом варианте вероятности использования одних и тех же сегментов памяти разными потоками
обоих будут... это же твой код! (хотя и нет кода потока/взаимосвязей, но результат ожидаем)


 
Игорь Шевченко ©   (2013-01-17 14:23) [2]

Запасаемся попкорном
http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=997762


 
Slym ©   (2013-01-17 14:31) [3]

+1
http://www.programmersforum.ru/showthread.php?t=225368


 
Сергей М. ©   (2013-01-17 14:44) [4]


> Замена указателей на Локал.Перем


В упор не вижу ничего подобного ни в одном варианте.
Но попкорном на всякий случай запасся)


 
brother ©   (2013-01-17 15:59) [5]

количеством берешь? теперь на тебя уже три! сайта работают ;)



Страницы: 1 вся ветка

Текущий архив: 2013.10.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
2-1358417243
Pcrepair
2013-01-17 14:07
2013.10.06
Замена указателей на Локал.Перем при работе функции в потоке


2-1358348219
lordalexander
2013-01-16 18:56
2013.10.06
Сровнение Мемо


2-1358414836
O'ShinW
2013-01-17 13:27
2013.10.06
Моргает ListView.(D7)


15-1366835403
Юрий
2013-04-25 00:30
2013.10.06
С днем рождения ! 25 апреля 2013 четверг


2-1358404977
aka
2013-01-17 10:42
2013.10.06
MediaPlayer