Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#5

Re: Suchschleife auf 2 Threads / CPUs aufteilen (OpenMP?)

  Alt 11. Apr 2007, 02:47
Zitat von Phantom1:
Das stimmt nicht so ganz, denn man kann windows genau anweisen welcher Thread auf welchen Kern ausgeführt werden soll.
In der Code-Library findet ihr einen Code von mir, der zeigt wie es geht: http://www.delphipraxis.net/internal...=618423#618423
Das stimmt nicht so ganz, denn ob es dir gefällt oder nicht, der Scheduler schert sich recht wenig darum was ein Usermode-Thread mal eben möchte. Die werden sozusagen in der Freizeit - dann allerdings mit gegebener Priorität - abgearbeitet. Einen echten Boost für einen Thread kann nur ein Treiber garantieren - und selbst dann haben wir mit Windows ja noch kein Echtzeitsystem. "Starving threads" sind also durchaus möglich und können vom System nicht verhindert werden, wenn ein Thread im Kernelmode die CPU-Ressourcen an sich reißt.

Phantom1:
Übrigens finde ich dein Beispiel nicht sehr gelungen. Durch die Angabe von 1 und 2 im Zusammenhang mit Core #1 bzw. Core #2 respektive, erweckst du den Anschein es handele sich um eine Aufzählung. Du solltest klarstellen daß es eine Bitmaske ist. Im Übrigen wäre die Aufzählung der CPUs/Kerne korrekt: Core #0 und Core #1 respektive.

Abgesehen davon mißachtet dein Beispiel folgende Warnung:
Zitat:
A thread affinity mask must be a proper subset of the process affinity mask for the containing process of a thread. A thread is only allowed to run on the processors its process is allowed to run on.
  Mit Zitat antworten Zitat