Главная страница
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.007 c
15-1367320515
Pit
2013-04-30 15:15
2013.10.06
Потокобезопасно ли ADO?


15-1366626747
DevilDevil
2013-04-22 14:32
2013.10.06
Относитесь ли вы к своей профессии, как к творчеству? (Опрос)


15-1366662603
Юрий
2013-04-23 00:30
2013.10.06
С днем рождения ! 23 апреля 2013 вторник


15-1365965231
ProgRAMmer Dimonych
2013-04-14 22:47
2013.10.06
Парсинг PHP-кода


2-1358365235
lordalexander
2013-01-16 23:40
2013.10.06
не могу понять почему ошибка