C# Process.ProcessorAffinity - Frage zur Nutzung

KampfFussel

Entwickler (N/A)
ID: 166482
L
21 April 2006
160
5
Hallo,

also ich möchte in C# mit einer WindowsForm die logischen Prozessoren anzeigen lassen, was auch klappt, und dann die Prozessoren mit nem häkchen versehen die von diesem Prozess benutzt werden. Jetzt zu dem Problem.

Da es derzeit unterschiedliche MultiCore Systeme gibt, und das Programm nicht irgendwann mal nur 4 Prozessoren erkennen soll, möchte ich das Programm dynamisch gestalten, allerdings steigen die möglichkeiten ja exponentiell.
Die Funktion "Process.ProcessorAffinity" gibt mir eine Zahl zurück.
Anhand dieser Zahl möchte ich herausfinden welche Prozessoren gerade von diesem Thread benutzt werden.

Formel: 2 hoch n - 1
z.B.:
Prozessoren = Möglichkeiten
1 = 1
2 = 3
3 = 7
4 = 15
....

Hier noch nen Link zu dieser Funktion: MSDN Link

Irgendwie peil ich es nicht wie ich das erledigen soll.. :-?
 
Zuletzt bearbeitet:
z.B.:
Prozessor = Möglichkeiten
1 = 1
2 = 3
3 = 7
4 = 15
....

Schau dir das mal in Binärform an. Das ist ne ganz normale Bitmaske... jeder Prozessor stellt ein Bit dar. (CPU 0 ist das niederwertigste) Und eine Bitmaske lässt sich ganz einfach mit ein bissel bitshifting manipulieren/auslesen.

PHP:
wert |= (1 << CPUNR); //setzen
wert &= ~(1 << CPUNR); //löschen

CPUNR fängt bei 0 an... und ein Bit auslesen kannst du mittels

PHP:
if(wert & (1 << CPUNR)) {}

und mehr braucht man dazu gar nicht.