2016-10-16 1 views
1

Visual Studio에서 C++로 프로그램을 강제 실행하고 특정 코어/코어 (둘 이상이있는 컴퓨터)에서 실행하는 방법을 궁금합니다.Windows의 특정 코어에서 실행되는 C++ 프로그램 만들기

은 내가 this 기사를 찾았지만, 리눅스에서 C를 의미한다 (그리고 난 창에서 Visual Studio를 사용하고 있습니다)

또한

, 내가 사용 윈도우 버전이 중요한가를?

+2

https://msdn.microsoft.com/en-us/library/windows/desktop/ms686247(v=vs.85).aspx 또는 https://msdn.microsoft.com/en-us/library/ windows/desktop/ms686223 (v = vs.85) .aspx –

+3

[SetProcessAffinityMask] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms686223(v=vs.85) .aspx) –

+0

이 링크에서 이해할 수있는 것은 : 1) Windows에서 특정 코어를 선택할 수없고, 'affinity mask (선호도 마스크)'는 운영 체제에서 전화를 걸더라도이를 제어하는 ​​도구입니다. 2) 스레드에서만 만들 수 있습니다. 사용자가 자신의 프로그램을 렌더링하도록 특별히 선택할 수있는 그래픽 프로그램을 들었 기 때문에이 개념은 나에게 이해가되지 않습니다. – yd1

답변

3

Windows API 함수 SetThreadIdealProcessorEx()을 사용할 수 있습니다. 이 기능은 Windows 7 이상에 적용됩니다. 구형 시스템에서는 몇 가지 제한 사항이 있지만 SetThreadIdealProcessor()을 사용할 수 있습니다. 스레드 이상적인 프로세서 지정 제 링크

의 소견에 따라

는 스레드에 대한 바람직한 프로세서에 대한 스케줄러에 힌트를 제공한다. 스케줄러는 가능한 경우 스레드의 이상적인 프로세서에서 스레드를 실행합니다.

스케줄러가 지정된 프로세서에서 스레드를 실행하도록하는 기능을 알지 못합니다. 그래서 스케줄러가 행동하려고 시도 할 힌트를주는 것은 아마도 여러분이 요구 사항을 충족시킬 수있는 가장 가까운 방법 일 것입니다.

는 스레드가 부모 프로세스의 선호도 마스크 내에 있지 않은 프로세서에서 실행할 수 없을 것 같다 이후 아마, 또한 프로세스가 실행할 수있는 프로세서를 지정하기 위해 노력하는,뿐만 아니라 SetProcessorAffinityMask()를 사용하는 것이 좋습니다 것 .

시스템 자체가 프로세스가 실행될 수있는 프로세서에 대한 제한을 부과 할 수 있으므로이 기능에 대한 설명서를주의 깊게 읽으십시오.

관련 문제