2010-02-26 4 views

답변

4

이것은 반드시 상수 일 필요는 없습니다. 스레드는 수명 기간 동안 다른 코어에 예약 될 수 있습니다. 원하는 경우 특정 스레드를 특정 CPU에 연결하도록 선호도 마스크를 설정할 수 있습니다. .Net 내에서 수행 할 수있는 작업에 대한 자세한 내용은 API docs for Thread.BeginThreadAffinity을 참조하십시오.

1

IMHO .NET 스레드가 네이티브 스레드에 바인딩되지 않았을 수 있습니다. > NET 런타임은 다른 원시 스레드와 프로세서간에 .NET 스레드를 언제든지 이동할 수 있습니다.

+1

시도했지만 포기했습니다. 현재 스레드가 운영 체제 스레드와 일치하지 않는 CLR 버전은 없습니다. 광섬유 (SQL Server 팀 프로젝트)를 사용하는 데 큰 실패를 감안할 때 곧 변경 될 가능성은 거의 없습니다. –

1

나는 할 수 있을지 확신하지 못합니다. 프로세스 선호도 마스크 (GetProcessAffinityMask)를 가져오고 동일하게 설정합니다 (SetProcessAffinityMask). 스레드 선호도 마스크를 설정할 수도 있지만 이해할 때 선호도 마스크를 설정 한 프로세서 중 하나에서 실행되도록 스레드를 제한하는 것이 좋습니다.

특정 코어에서 실행중인 특정 스레드를 탐색하는 경우 코드가 실행될 수있는 코어 세트를 정의하기 위해 프로세스 선호도 마스크를 설정하면 프로세스의 스레드가 선택한 코어 사이에 떠있게됩니다 .

관련 문제