.NET Framework
프로세스 및 스레드 선호도 설정
수색…
매개 변수
매개 변수 | 세부 |
---|---|
유연 | 프로세스가 실행될 수있는 프로세서 세트를 설명하는 정수 예를 들어, 8 프로세서 시스템에서 프로세서 3과 4에서만 프로세스를 실행하려면 다음과 같은 선호도를 선택하십시오. 00001100 = 12 |
비고
스레드의 프로세서 선호도는 관계가있는 프로세서 집합입니다. 즉, 실행 예약을 할 수 있습니다.
프로세서 선호도는 각 프로세서를 비트로 나타냅니다. 비트 0은 프로세서 1을 나타내며 비트 1은 프로세서 2를 나타냅니다.
프로세스 선호도 마스크 가져 오기
public static int GetProcessAffinityMask(string processName = null)
{
Process myProcess = GetProcessByName(ref processName);
int processorAffinity = (int)myProcess.ProcessorAffinity;
Console.WriteLine("Process {0} Affinity Mask is : {1}", processName, FormatAffinity(processorAffinity));
return processorAffinity;
}
public static Process GetProcessByName(ref string processName)
{
Process myProcess;
if (string.IsNullOrEmpty(processName))
{
myProcess = Process.GetCurrentProcess();
processName = myProcess.ProcessName;
}
else
{
Process[] processList = Process.GetProcessesByName(processName);
myProcess = processList[0];
}
return myProcess;
}
private static string FormatAffinity(int affinity)
{
return Convert.ToString(affinity, 2).PadLeft(Environment.ProcessorCount, '0');
}
}
사용 예 :
private static void Main(string[] args)
{
GetProcessAffinityMask();
Console.ReadKey();
}
// Output:
// Process Test.vshost Affinity Mask is : 11111111
프로세스 선호도 마스크 설정
public static void SetProcessAffinityMask(int affinity, string processName = null)
{
Process myProcess = GetProcessByName(ref processName);
Console.WriteLine("Process {0} Old Affinity Mask is : {1}", processName, FormatAffinity((int)myProcess.ProcessorAffinity));
myProcess.ProcessorAffinity = new IntPtr(affinity);
Console.WriteLine("Process {0} New Affinity Mask is : {1}", processName, FormatAffinity((int)myProcess.ProcessorAffinity));
}
사용 예 :
private static void Main(string[] args)
{
int newAffinity = Convert.ToInt32("10101010", 2);
SetProcessAffinityMask(newAffinity);
Console.ReadKey();
}
// Output :
// Process Test.vshost Old Affinity Mask is : 11111111
// Process Test.vshost New Affinity Mask is : 10101010
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow