![]() |
Wie den CPU-Cores Threads zuordnen mit SetThreadAffinityMask
Hallo,
ich habe eine Beispielanwendung mit 8 verschiedenen Threads, die ich basierend auf einem Intel Core i7 System den 8 Kernen zuordnen möchte. Der Core i7 hat ja 4 physikalische Kerne und jeder Kern verfügt über einen zusätzlichen HyperThreading-Kern, also insgesamt 8 Kerne (das zeigt auch der Taskmanager an). Nun verwende ich in den Thread-Create Funktionen die Funktion SetThreadAffinityMask, und als Übergabewert verlangt diese Funktion ein Handle, was ich auch korrekt übergebe, sowie die sogenannte dwThreadAffinityMask. Leider finde ich nun aber keine Infos, wie diese AffinityMask aussehen muss, um den Thread etwa dem 5. Kern zuzuweisen. Auch die MSDN-Doku hilft hier nicht weiter: ![]() Kann mir da jemand helfen ? Ich vermute, es ist eine Bit-basierte Geschichte, also etwa Bit X für Kern X. |
Re: Wie den CPU-Cores Threads zuordnen mit SetThreadAffinity
Zitat:
Aber gibt es einen bestimmten Grund, warum du den Vorschlaghammer verwendest? Möglicherweise genügt ![]() |
Re: Wie den CPU-Cores Threads zuordnen mit SetThreadAffinity
Zitat:
Problematisch ist allerdings, wenn ich von den 8 Kernen etwa nur Kern 1 und 2 ansprechen möchte. Ich glaube, da hat das Shiften seine Grenzen... Zitat:
|
Re: Wie den CPU-Cores Threads zuordnen mit SetThreadAffinity
Wenn du mehrere Prozessoren erlauben willst, musst du die Bitmasken verodern. Das sollte nicht allzu überraschend sein.
|
Re: Wie den CPU-Cores Threads zuordnen mit SetThreadAffinity
Zitat:
Bit <-> Kern 0 <-> 1 1 <-> 2 2 <-> 3 3 <-> 4 4 <-> 5 5 <-> 6 6 <-> 7 7 <-> 8 Wenn ich etwa die Kerne 5 und 6 ansprechen möchte, muss ich die Bits 4 und 5 setzen (mit der Oder-Verknüpfung). |
Re: Wie den CPU-Cores Threads zuordnen mit SetThreadAffinity
Korrekt. Das entspricht dann also (1 shl 4) or (1 shl 5) = 16 or 32 = 48.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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