Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : PThreads nutzen nur einen Kern



Tarzipan
11-11-2008, 09:49
Hallo,
ich habe nach gängigen Anleitungen mit PThreads versucht Programme zu parallelisieren. Die Threads laufen auch alle ganz toll "parallel", allerdings nutzt das Programm immer nur einen Kern. Welchen Vorteil haben PThreads dann gegenüber fork(), welches sehr teuer und umständlich zu synchronisieren ist, aber wirklich parallel läuft? Die die Context-Switches für die program counter erzeugen doch nur overhead. Mache ich irgendwas falsch?

anda_skoa
11-11-2008, 11:03
Ohne ein bischen Beispiel Code lässt sich schwer sagen, was falsch ist.

Ciao,
_

Tarzipan
11-11-2008, 11:17
Ich habe den Code gerade nicht zur Hand. Die Frage ist, ob pthreads immer auf mehrere Kerne verteilt werden können oder wodurch dies nicht möglich ist.

msi
11-11-2008, 12:06
Ich habe den Code gerade nicht zur Hand. Die Frage ist, ob pthreads immer auf mehrere Kerne verteilt werden können oder wodurch dies nicht möglich ist.

was für ein betriebssystem benutzt du denn?
und welche pthread library?
kann sein dass deine version die threads nur im user space
laufen lässt oder dein betriebssystem threads nicht unterstützen

außerdem wär code nicht schlecht, wenn du
die threads gegenseitig auslockst läuft natürlich
nichts parallel...

Tarzipan
11-11-2008, 12:52
Meine Vermutung ist, dass die Threads nur im Userspace laufen. Ich benutze Linux 2.6.17 mit pthreads (GNU C Library). Gelockt war natürlich nichts.

anda_skoa
12-11-2008, 14:34
Bei 2.6.x ist es ziemlich wahrscheinlich, dass es echte Kernelthreads sind.

Ciao,
_