Перехват OnTerminate от нескольких потоков

Имеем код
1)Интересует вопрос не получу ли я AV и прочие "радости" при одновременном доступе нескольких потоков к процедуре OnTreadTerminate ?
2)OnTreadTerminate выполняется в главном потоке , как и в delhpi ?
3)Thread.Handle и Thread.ThreadID в чем разница ?
4) WRITE_DEBUG попадает в конечный релиз (сборка без отладочной информации)?
Добавлено спустя 9 часов 55 минут 12 секунд:
По поводу 1) Жизнь и смерть в режиме run-timehttp://www.delphikingdom.com/asp/viewitem.asp?catalogid=342, но там кнопки у меня потоки
- Код: Выделить всё
unit main;
{$ifdef FPC}{$mode objfpc}{$h+}{$endif}
interface
uses
mseglob,mseguiglob,mseguiintf,mseapplication,msestat,msemenus,msegui,
msegraphics,msegraphutils,mseevent,mseclasses,mseforms,classes,sysutils,
msesimplewidgets,msewidgets;
type
tmainfo = class(tmainform)
tbutton1: tbutton;
procedure OnTreadTerminate(Sender: TObject);
procedure _on_run(const sender: TObject);
end;
TTestThread = class(Tthread)
protected
procedure Execute; override;
public
end;
var
mainfo: tmainfo;
t1,t2,t3:TTestThread;
implementation
uses
main_mfm;
procedure tmainfo.OnTreadTerminate(Sender: TObject);
var
y:TThreadID;
begin
if Sender is TTestThread then
begin
y:=TTestThread(Sender).Handle;
if y=t1.handle then begin showmessage('t1'+' (handle='+inttostr(y)+')') end;
if y=t2.handle then begin showmessage('t2'+' (handle='+inttostr(y)+')') end;
if y=t3.handle then begin showmessage('t3'+' (handle='+inttostr(y)+')') end;
end;
end;
procedure test();
begin
T1:=TTestThread.Create(True);
T2:=TTestThread.Create(True);
T3:=TTestThread.Create(True);
T1.Onterminate:=@mainfo.OnTreadTerminate;
T2.Onterminate:=@mainfo.OnTreadTerminate;
T3.Onterminate:=@mainfo.OnTreadTerminate;
T1.Resume;
T2.Resume;
T3.Resume;
end;
procedure tmainfo._on_run(const sender: TObject);
begin
test;
end;
procedure TTestThread.Execute;
begin
sleep(50*round(random(2))+50);
end;
end.
1)Интересует вопрос не получу ли я AV и прочие "радости" при одновременном доступе нескольких потоков к процедуре OnTreadTerminate ?
2)OnTreadTerminate выполняется в главном потоке , как и в delhpi ?
3)Thread.Handle и Thread.ThreadID в чем разница ?
4) WRITE_DEBUG попадает в конечный релиз (сборка без отладочной информации)?
Добавлено спустя 9 часов 55 минут 12 секунд:
По поводу 1) Жизнь и смерть в режиме run-timehttp://www.delphikingdom.com/asp/viewitem.asp?catalogid=342, но там кнопки у меня потоки
