Foros Club Delphi

Foros Club Delphi (http://www.clubdelphi.com/foros/index.php)
-   Trucos (http://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Establecer la afinidad de un proceso (En qué CPU se ejecuta el mismo) (http://www.clubdelphi.com/foros/showthread.php?t=80818)

cHackAll 23-07-2007 04:00:34

Establecer la afinidad de un proceso (En qué CPU se ejecuta el mismo)
 
Código Delphi [-]
uses Windows;

var
 Dummy, Mask: Cardinal;
 si: TStartupInfo = (cb: SizeOf(TStartupInfo));
 pi: TProcessInformation;

begin
 CreateProcess(nil, 'notepad', nil, nil, False, 0, nil, nil, si, pi); // Ejecutamos el Bloc de notas,
 GetProcessAffinityMask(DWORD(-1), Dummy, Mask);                      // Obtenemos en Mask, los CPUs disponibles,
 if (Mask and 2) <> 0 then                                            // Verificamos si existen dos CPUs como mínimo...
  SetProcessAffinityMask(pi.hProcess, 2);                             // Le asignamos dicho proceso solo al segundo CPU
end.

function Windows.SetProcessAffinityMask(hProcess, dwProcessAffinityMask: Cardinal): LongBool;
// Cada bit de dwProcessAffinityMask representa un microprocesador o nucleo
hProcess := OpenProcess(PROCESS_SET_INFORMATION, False, dwProcessID); // donde dwProcessID es el identificador del proceso
hProcess := GetCurrentProcess; {-1}
hProcess := TProcessInformation.hProcess;

cHackAll 23-07-2007 17:04:45

huuy, se me fue... algun moderador me lo poner como "Delphi - Sistema"... gracias!


La franja horaria es GMT +2. Ahora son las 19:13:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi