Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.13;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.016 c
2-1213011349
Johnnnnn
2008-06-09 15:35
2008.07.13
Как заполнить Flesh форму?


4-1192946133
SKIPtr
2007-10-21 09:55
2008.07.13
Какую функцию лучше использовать


2-1213494964
DJ_UZer
2008-06-15 05:56
2008.07.13
SynEdit добавление текста


2-1213274505
Franzy
2008-06-12 16:41
2008.07.13
Try...Except не ловит ошибки ввода/вывода


15-1211816666
Tualatin
2008-05-26 19:44
2008.07.13
файл ресурса (где картинки jpg)