2016-07-13 3 views
0

3 개의 스레드를 생성하는 프로세스가 있습니다. 나는 1 개의 CPU 코어에 1 개의 스레드를 할당하고 (CPU에는 8 개의 물리적 코어가 있음) 해당 코어는 스레드 만 실행하려고합니다. 왜냐하면 내 계산 스레드가 항상 가장 높은 우선 순위로 실행되도록하고 싶기 때문입니다.1 개의 CPU 코어를 1 개의 스레드에 할당 C++

예 : 스레드 1은 코어 1에 할당되고 코어 1은 스레드 1에서만 실행됩니다. 코어 0,2,3,4,5,6,7은 다른 프로세스의 스레드를 자유롭게 실행할 수 있습니다.

어떤 라이브러리가 이것을 지원합니까? 또는 누군가 그것을하는 방법을 알고 있는가?

+1

어떤 OS를 사용합니까? 리눅스에서는'sched_setaffinity' 매뉴얼 페이지를 참고하십시오. – gudok

+0

gudok에 감사드립니다. 저는 Windows 7을 사용합니다. – Legend22

+0

왜 이것을하고 싶습니까? BTW, ** 질문을 ** 수정해야합니다. 우선 Windows에 태그를 지정하고 동기를 부여하십시오. 의견을 말하지 말고 질문을 편집하십시오. –

답변

1

이것은 일반적으로 프로세서 또는 스레드 선호도라고하며 플랫폼 수준에서 처리 할 수 ​​있습니다.

Windows에서는 SetThreadAffinityMask 기능을 사용할 수 있습니다.

+0

정확히 내가 원하는 것은 할당 된 후, CPU 코어는 스레드 만 실행합니다. SetThreadAffinityMask가 도움이됩니까? – Legend22

+0

당신이 의미하는 바에 따라 OS가 그 코어에서 스케쥴링하는 유일한 시스템 전체 스레드를 의미한다면, 그럴 수 없다고 생각합니다. 다른 프로세스도 또한 스케줄됩니다. 그것. 그러나 다른 코어를 다른 코어에 할당하면 결코 실행되지 않습니다. – monoceres

+0

시스템에서 실행중인 모든 * 프로세스에 대해 SetThreadAffinityMask를 설정하여이를 달성하기 위해 하나의 코어를 제외 할 수 있습니다. 적어도 이론적으로는. –

1

Linux의 경우 sched_setaffinity 및 sched_getaffinity가 있습니다.

0

http://linux.die.net/man/2/sched_setaffinity는 별도로 SetThreadAffinityMask에서, 좀 더 관대 한 경우에 당신은 당신이 (동일한 코어에 고정 즉 여러 CPU 사용량이 응용 프로그램)에서 실행하는 코어 나쁜 결정을 내릴 수있는 SetThreadIdealProcessor도있다.

관련 문제