Determinar en qué procesador físico mi código se está ejecutando actualmente

StackOverflow https://stackoverflow.com/questions/1341400

  •  20-09-2019
  •  | 
  •  

Pregunta

¿Hay una API de Windows o cualquier forma de determinar en cuales física procesador / núcleo mis carreras hilo actual? No necesito esa información. Sólo por curiosidad.

No estoy interesado en los procesadores se permite el hilo que se ejecuta. Me gustaría saber exactamente cuál se ejecuta actualmente. Sé que los hilos cambian muy rápido de una a otra ...

¿Fue útil?

Solución

Hilos suelen cambiar de procesador a procesador, por lo que es algo sin sentido, pero se puede utilizar GetCurrentProcessorNumber .

Como otros han dicho, puede utilizar GetProcessAffinityMask o GetThreadIdealProcessor, pero los que sólo funcionará si ya ha configurado una máscara de afinidad o procesador ideal para el hilo.

Otros consejos

Puede consultar la afinidad del procesador con GetProcessAffinityMask . Si no ha configurado la afinidad del procesador, no estoy seguro de lo útil que el resultado será, sin embargo, como el hilo puede revolotear entre los procesadores.

Para controlar qué procesador de su proceso o subproceso se ejecuta en el uso de la API de Windows puede utilizar o href="http://msdn.microsoft.com/en-us/library/ms686223(VS.85).aspx" rel="nofollow noreferrer"> SetProcessAffinityMask .

Estos funcionan mediante el establecimiento de bits en una máscara de bits, donde cada bit representa un procesador de su hilo de rosca o proceso puede ser programado para:

BOOL WINAPI SetProcessAffinityMask(
  __in  HANDLE hProcess,
  __in  DWORD_PTR dwProcessAffinityMask
);

GetProcessAffinityMask para descubrir cuáles son los procesadores están disponibles para su uso en estas llamadas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top