Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Alternative zu LinuxThreads?

  1. #1
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677

    Post Alternative zu LinuxThreads?

    Kennt jemand andere pthread-Implementierungen für Linux? Gibt es Erfahrungen damit?

    Hintergrund: die "LinuxThreads"-Implementierung, die in der glibc enthalten ist, hat massive Probleme mit Signalen.

    Mein konkretes Problem ist, dass jeder Thread ein eigener Prozess (!) mit einer eigenen Prozessnummer ist, so dass vom Haupthread generierte Kindprozesse keine Kindprozesse der anderen Threads sind (=> waitpid() und dergleichen funktioniert nicht).

    Christoph

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.01.2001
    Beiträge
    157

    Post

    Schau Dir mal das an: http://oss.software.ibm.com/pthreads/
    Ich hab damit noch keine grossen Erfahrungen aber die Ziele der Entwickler sind vielversprechend. Allerdings ist die Library nicht preemtiv und ein read() in einem Thread wuerde alle blocken. Es existieren aber auch zwei Emulations-Layer mit denen sich dieses Problem loesen laesst. Auf Multiprozessoren skaliert es auch nur wenn der zugehoerige Kernel-patchaktivist.

    Wenn dass nicht hilft brauchst Du eben einen eigenen Prozess-Create/Waitfor-Thread. Dieser sollte nichts anderes tun als auf Anforderung neue Prozesse zu starten und Buch ueber das Beenden dieser Prozesse fueren. Ueber passende asynchrone Aufrufe aus den anderen Threads anstelle von fork() oder waitpid() wird das ganze angesprochen. Dies liese sich relativ einfach und schnell machen, koennte aber bei haeufiger Prozesserzeugung vor allem auf mehreren CPUs zum Flaschenhals werden. Ausserdem muessen die Threads sich nicht nur den Speicher, sondern auch offene Dateideskriptoren teilen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677

    Post

    Klingt in der Tat vielversprechend. Allerdings erfordert diese Version einen Kernel-Patch, zu dem ich unsere Systemadministratoren für den Produktiv-Server kaum überreden kann.

    + Allerdings ist die Library nicht preemtiv
    + und ein read() in einem Thread wuerde alle
    + blocken.
    +
    Das würde allerdings einen der Hauptnutzen von Threads (auch in meinem Fall der Hauptgrund für Threadeinsatz) zunichte machen. Wo hast du diese Info her (eigene Erfahrung?)? Auf der IBM-Seite kann ich dazu nix finden.

    + Wenn dass nicht hilft brauchst Du eben
    + einen eigenen Prozess-Create/Waitfor-Thread.
    + Dieser sollte nichts anderes tun als auf
    + Anforderung neue Prozesse zu starten und
    + Buch ueber das Beenden dieser Prozesse
    + fueren.
    +
    Das ist letztlich der Workaround zu dem ich mich jetzt entschieden habe: Prozesse werden nur noch vom Hauptthread gestartet, beendet und überprüft.

    Christoph

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •