Вниз
Скачать: CL | DM;

WaitFor   Найти похожие ветки 

← →
Анонимщики ©   (2008-06-10 15:14) [0]

Прошу мастеров прокомментировать очевидность и правильность зависания:



program ThreadsDeadLocks_DEMO;

{$APPTYPE CONSOLE}

uses
 SysUtils,
 Classes;

type
 TRapidThread = class(TThread)
 protected
   procedure Execute; override;
 public
   constructor Create(CreateSuspended: Boolean);
   destructor Destroy; override;
 end;

procedure TRapidThread.Execute;
begin
end;

constructor TRapidThread.Create(CreateSuspended: Boolean);
begin
 inherited;
 FreeOnTerminate := false;
end;

destructor TRapidThread.Destroy;
begin
 WaitFor;
 inherited;
end;

var
 rt: TRapidThread;
begin
 try
   rt := TRapidThread.Create(true);
   rt.Execute;
   Sleep(3000);
//    rt.WaitFor;
   rt.Free;

 except
   on E:Exception do
     Writeln(E.Classname, ": ", E.Message);
 end;
end.


← →
DVM ©   (2008-06-10 15:21) [1]

resume Пушкин делать будет потоку.


← →
Поросенок Винни-Пух ©   (2008-06-10 15:23) [2]

rt := TRapidThread.Create(true);
rt.Execute;

Чума!


← →
Анонимщики ©   (2008-06-10 15:25) [3]

тьфу, Resume


← →
Анонимщики ©   (2008-06-10 15:26) [4]

в данном случае замена Execute на Resume абсолютно не играет конструктивной роли


← →
Анонимщики ©   (2008-06-10 15:28) [5]

Прошу прощения, вопрос снят


← →
Поросенок Винни-Пух ©   (2008-06-10 15:32) [6]

в данном случае замена Execute на Resume абсолютно не играет конструктивной роли

А ничего, что то, что по замыслу должно выполняться во вторичном потоке вызвано из главного и в его контексте и выполняется?

:))

И нафига в таком разе вэйтфор?
Типа управление может волшебным образом перейти на следующую строчку еще до возврата из execute?

:))))


← →
Сергей М. ©   (2008-06-10 16:19) [7]


> прокомментировать очевидность и правильность зависания:
>


Где что у тебя висит - неочевидно и непонятно.

Зато очевидна и непонятна пустота в теле перекрытого метода Execute.
Очевидно и непонятно также присутствие явного вызова WaitFor в перекрытом деструкторе, в то время как этот же WaitFor присутствует в виртуальном деструкторе класса TThread



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
2-1213165699
Gringoire
2008-06-11 10:28
2008.07.13
Матрицы в делфи.


2-1213459702
WebSQLNeederrr
2008-06-14 20:08
2008.07.13
WebBrowser.Navigate( page.html ) - загрузить не брать из кеша


2-1213386637
MaryM
2008-06-13 23:50
2008.07.13
SynEdit и Delphi 2007


11-1189856395
Robt
2007-09-15 15:39
2008.07.13
ComboBox


15-1211801480
тимохов
2008-05-26 15:31
2008.07.13
Совсем оффтоп, но на вас вся надежда




   Наверх