SetThreadAffinityMask 함수(winbase.h)

지정된 스레드에 대한 프로세서 선호도 마스크를 설정합니다.

구문

DWORD_PTR SetThreadAffinityMask(
  [in] HANDLE    hThread,
  [in] DWORD_PTR dwThreadAffinityMask
);

매개 변수

[in] hThread

선호도 마스크를 설정할 스레드에 대한 핸들입니다.

이 핸들은 THREAD_SET_INFORMATION 또는 THREAD_SET_LIMITED_INFORMATION 액세스 권한과 THREAD_QUERY_INFORMATION 또는 THREAD_QUERY_LIMITED_INFORMATION 액세스 권한이 있어야 합니다. 자세한 내용은 스레드 보안 및 액세스 권한을 참조하세요.

Windows Server 2003 및 Windows XP: 핸들에는 THREAD_SET_INFORMATIONTHREAD_QUERY_INFORMATION 액세스 권한이 있어야 합니다.

[in] dwThreadAffinityMask

스레드에 대한 선호도 마스크입니다.

프로세서가 64개 이상인 시스템에서 선호도 마스크는 스레드의 현재 프로세서 그룹에 프로세서를 지정해야 합니다.

반환 값

함수가 성공하면 반환 값은 스레드의 이전 선호도 마스크입니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

스레드 선호도 마스크가 프로세스 선호도 마스크에 대해 선택되지 않은 프로세서를 요청하는 경우 마지막 오류 코드가 ERROR_INVALID_PARAMETER.

설명

스레드 선호도 마스크는 각 비트가 스레드를 실행할 수 있는 논리 프로세서를 나타내는 비트 벡터입니다. 스레드 선호도 마스크는 스레드를 포함하는 프로세스에 대한 프로세스 선호도 마스크의 하위 집합이어야 합니다. 스레드는 프로세스를 실행할 수 있는 프로세서에서만 실행할 수 있습니다. 따라서 프로세스 선호도 마스크가 해당 프로세서에 대해 0비트 를 지정하는 경우 스레드 선호도 마스크는 프로세서에 대해 1비트 를 지정할 수 없습니다.

프로세스 또는 스레드에 대한 선호도 마스크를 설정하면 시스템이 특정 프로세서에서 스레드를 실행할 수 없으므로 스레드의 프로세서 시간이 줄어들 수 있습니다. 대부분의 경우 시스템에서 사용 가능한 프로세서를 선택하도록 하는 것이 좋습니다.

새 스레드 선호도 마스크가 현재 스레드를 실행 중인 프로세서를 지정하지 않으면 스레드는 허용 가능한 프로세서 중 하나에서 다시 예약됩니다.

Windows 11 및 Windows Server 2022부터 64개 이상의 프로세서가 있는 시스템에서 프로세스 및 스레드 친화성은 기본적으로 시스템의 모든 프로세서, 모든 프로세서 그룹에 걸쳐 있습니다. dwThreadAffinityMask는 스레드의 현재 기본 그룹에 프로세서를 지정해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 winbase.h(Windows.h 포함)
라이브러리 Kernel32.lib
DLL Kernel32.dll

참고 항목

GetProcessAffinityMask

다중 프로세서

OpenThread

프로세스 및 스레드 함수

프로세서 그룹

SetProcessAffinityMask

SetThreadIdealProcessor

스레드