Cuando crea un descendiente TThread utilizando la paleta de herramientas en su BDS, puede proporcionar un nombre para el hilo. Aquí está el código generado automáticamente. Que acaba de llamar a la función SetName() en el método de ejecución y el hilo de llamar a este método se le da un nombre en una especie de manera extraña ...Hilos con nombre en Delphi: ¿para qué sirve?
{$IFDEF MSWINDOWS}
type
TThreadNameInfo = record
FType: LongWord; // must be 0x1000
FName: PChar; // pointer to name (in user address space)
FThreadID: LongWord; // thread ID (-1 indicates caller thread)
FFlags: LongWord; // reserved for future use, must be zero
end;
{$ENDIF}
{ TTestThread }
procedure TTestThread.SetName;
{$IFDEF MSWINDOWS}
var
ThreadNameInfo: TThreadNameInfo;
{$ENDIF}
begin
{$IFDEF MSWINDOWS}
ThreadNameInfo.FType := $1000;
ThreadNameInfo.FName := 'ThreadName';
ThreadNameInfo.FThreadID := $FFFFFFFF;
ThreadNameInfo.FFlags := 0;
try
RaiseException($406D1388, 0, sizeof(ThreadNameInfo) div sizeof(LongWord), @ThreadNameInfo);
except
end;
{$ENDIF}
end;
Me resulta muy útil durante la depuración para que usted no puede ver solo TID, pero también nombres de subprocesos asignados de esa manera. Sabes qué hilo es el que gracias a eso.
Dígame, sin embargo, si se puede acceder al nombre asignado de alguna manera. ¿Se puede leer según el manejo de un hilo? ¿O puede ser leído incluso desde 'afuera' del proceso por otro proceso? Ya sabes, hay aplicaciones que enumeran tus procesos y los hilos que trabajan en ellos. ¿Este nombre será accesible para aplicaciones como esa?
Gracias!
Para cualquiera que esté buscando cómo configurar el nombre del hilo MIENTRAS que en el depurador, este docwiki El tema debería ayudar: Manualmente: http://docwiki.embarcadero.com/RADStudio/Seattle/en/Naming_a_Thread_While_Debugging En el código: http://docwiki.embarcadero.com/Libraries/Seattle/en/System.Classes.TThread.NameThreadForDebugging –