쓰레드에 이름 달아주기
탐구생활/Delphi쓰레드 코딩을 하다보면... 디버깅창에 줄줄이 나타난 쓰레드가 어디서 만든 뭐하는 녀석인지 궁금할 때가 있다.
이 때 각 쓰레드마다 이름을 붙여둔다면 심적으로나마 편안함을 얻을 수 있지 않을까...
물론 디버깅에서만 유효하지만, 좋은 내용이 있어 공유한다.
http://msdn.microsoft.com/en-us/library/xcb2z8hs.aspx
http://blogs.msdn.com/b/stevejs/archive/2005/12/19/505815.aspx
const
MS_VC_EXCEPTION = $406D1388;
type
TThreadNameInfo = record
dwType: DWORD; // Must be 0x1000.
szName: PAnsiChar; // Pointer to name (in user addr space).
dwThreadID: DWORD; // Thread ID (-1=caller thread).
dwFlags: DWORD; // Reserved for future use, must be zero.
end;
procedure SetThreadName(aThreadID: DWORD; const aThreadName: PAnsiChar);
var
tmi: TThreadNameInfo;
begin
if (DebugHook = 0) then Exit;
tmi.dwType := $1000;
tmi.szName := aThreadName;
tmi.dwThreadID := aThreadID;
tmi.dwFlags := 0;
try
RaiseException(MS_VC_EXCEPTION, 0, sizeof(tmi) div sizeof(LongWord), PDWORD(@tmi));
except
end;
end;