Zoeken…


parameters

Parameter Details
affiniteit geheel getal dat de set processors beschrijft waarop het proces mag worden uitgevoerd. Als u bijvoorbeeld op een 8-processorsysteem wilt dat uw proces alleen op processors 3 en 4 wordt uitgevoerd, dan kiest u voor affiniteit zoals deze: 00001100, wat gelijk is aan 12

Opmerkingen

De processoraffiniteit van een thread is de verzameling processors waarmee deze een relatie heeft. Met andere woorden, diegene waarop het kan worden uitgevoerd.

Processoraffiniteit vertegenwoordigt elke processor als een bit. Bit 0 vertegenwoordigt processor één, bit 1 vertegenwoordigt processor twee, enzovoort.

Krijg procesaffiniteitsmasker

    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');
    }
}

Voorbeeld van gebruik:

private static void Main(string[] args)
{
    GetProcessAffinityMask();

    Console.ReadKey();
}
// Output:
// Process Test.vshost Affinity Mask is : 11111111

Stel procesaffiniteitsmasker in

    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));
    }

Voorbeeld van gebruik:

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow