![]() |
Thread auf bestimmten CPU-Kern laufen lassen
Hallo
Ich habe etwas mit Threads experimentiert. Funktioniert auch recht gut. Jetzt frage ich mich, ob man für einen ganz bestimmten Thread festlegen kann, auf welchem CPU-Kern dieser laufen soll. Läßt sich da etwas machen? |
Re: Thread auf bestimmten CPU-Kern laufen lassen
|
Re: Thread auf bestimmten CPU-Kern laufen lassen
OK, danke. Aber bei dieser AffinityMask blicke ich nicht durch.
|
Re: Thread auf bestimmten CPU-Kern laufen lassen
Ist doch in dem Thread erklärt. Un dwenn du es nicht verstehst, kannst du ja in dem Thread noch mal nachfragen.
|
Re: Thread auf bestimmten CPU-Kern laufen lassen
Zitat:
Code:
Somit kannst du nun mit SetAffinityMask eindeutig festlegen, auf welche Kerne verteilt wird.
+------------+
| Kern | Bit | |------------| | 1 | 0 | |------------| | 2 | 1 | |------------| | n | n-1 | +------------+ (1 shl 0) or (1 shl 1) wäre für Kern 1 und Kern 2. Edit: falls dir die Veroderung nicht klar ist, schau es dir mal in der Bitschreibweise an: 1 shl 0 = 1 1 shl 1 = 2
Code:
00000001
or 00000010 ____________ 00000011 ============ |
Re: Thread auf bestimmten CPU-Kern laufen lassen
Danke, jetzt wird langsam Licht.
Momentan sieht mein Code recht einfach aus, nämlich so:
Delphi-Quellcode:
Somit würde dieser Thread auf Kern 2 laufen. Richtig?
Thread:=TMyThread.Create(false);
SetThreadAffinityMask(Thread.Handle, 1 shl 1); Da ich eine Core2Duo habe, erscheinen im Taskmanager (Systemleistung) unter "Verlauf der CPU-Auslastung" 2 Diagramme. Wenn ich nun 1 shl 0 nehme, zeigt das rechte Diagramm eine fast volle Auslastung an. Bei 1 shl 1 hingegen das linke Diagramm. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz