• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

POSIX Threads

FierceOne

Kampfmaschine
Themenstarter #1
Hallo!

Ich habe ne Frage zum Multithreading. Und zwar bin ich da jetzt gerade eingestiegen. Ich habe ein Programm geschrieben das mehrere (variabel)POSIX Threads startet. Was mich wundert ist das die Zeit, die das Programm laeuft konstant bleibt. Das duerfte doch eigentlich nicht sein, da ich ne Multiprozessor Maschine (Dual Xeon) habe. Normal muesste doch der Kernel da Ladung auf die CPUs verteilen oder?!? Ich meine in meinem tollen Buch hier steht das auf jeden Fall so und wenn man so im Internet rumschaut habe ich es auch schon gelesen. Kompiler sind es nicht da ich GNU und Intel ausprobiert habe. Sie zeigen beide dasselbe Verhalten. Oder ist es vielleicht FreeBSD SMP Unterstuetzung die das nicht so macht. Ich habe gerade FreeBSD 5.1 p11 laufen. Bei make -jX buildworld geht es prima. Worum nicht mit threads???

DANKE
 
#2
Du musst gegen eine der threading libs linken, die auch Kernelthreads benutzen. Das kannst Du entweder zur Compile/Linkzeit machen, indem du die entsprechende Library (-lkse oder -lthr) angibst:
Code:
cc a.o b.o c.o -o blubber -lkse
oder sogar zur Laufzeit, indem Du den rtld mit libmap Unterstützung compilierst und dann für Dein executable den entsprechenden Eintrag in die /etc/libmap.conf vornimmst (kannst du auch global machen). Dazu musst Du:

1. Die sourcen haben

2. in /usr/src/libexec/rtld-elf/Make 'WITH_LIBMAP=yes' eintragen

3. cd /usr/src/libexec/rtld-elf; make obj && make depend && make && make install

4. 'man libmap.conf' lesen :)
 

FierceOne

Kampfmaschine
Themenstarter #4
Sehr geil! Jetzt geht es genau wie die Theorie vorraussagt. Schon ab 2 Threads halbiert sich die Zeit. DANKE