2009-08-27 4 views
1

Windows API가 있습니까? 또는 현재 스레드가 실행중인 실제 프로세서/코어를 확인할 수있는 방법이 있습니까? 나는 그 정보가 필요하지 않습니다. 나는 단지 궁금하다.내 코드가 현재 실행중인 실제 프로세서를 확인하십시오.

스레드가 실행되도록 허용 된 프로세서에 관심이 없습니다. 나는 그것이 현재 어느 것이 실행되는지 정확히 알고 싶다. 스레드가 매우 빠르게 전환된다는 것을 알고 있습니다 ...

답변

3

스레드들은 프로세서 프로세서에서 전환됩니다, 그래서 가지 의미,하지만 당신은 다른 사람이 말했듯이, 당신이 GetProcessAffinityMask 또는 GetThreadIdealProcessor는 사용할 수 있지만, 이미 한 경우 그에만 작동합니다 GetCurrentProcessorNumber

을 사용할 수 있습니다 스레드에 대한 선호도 마스크 또는 이상적인 프로세서를 설정하십시오.

+1

이것이 가능하다고 생각하지 않았지만 그 사실을 반영하기 위해 제 대답이 편집되었습니다. –

+0

니스, 가능하다는 것을 깨닫지 못했습니다. –

+0

통계 또는 일종의 시각화와 같은 정보로 멋진 쓸모없는 일을 할 수있었습니다.) 감사합니다. – Nick

1

Windows API를 사용하여 프로세스 나 스레드가 실행되는 프로세서를 제어하려면 SetThreadAffinityMask 또는 SetProcessAffinityMask을 사용할 수 있습니다. 이러한 호출에서 사용할 수있는 프로세서를 발견

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

전화 GetProcessAffinityMask :

각 비트 프로세서를 스레드 또는 프로세스를 나타내는 비트 마스크에 비트를 설정하여이 작업을 위해 예약 할 수 있습니다.

2

프로세서 선호도를 GetProcessAffinityMask으로 쿼리 할 수 ​​있습니다. 프로세서 친 화성을 설정하지 않은 경우, 스레드가 프로세서 사이에 끼어들 수 있으므로 결과가 얼마나 유용할지 확신 할 수 없습니다.