- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 94

Thema: pthread: was genau macht "joinable" und was macht "detached"?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Hier: Das zeigt es Graphisch

    https://social.technet.microsoft.com...delegates.aspx

    Der worker thread muss eben wieder sauber beendet werden und die Resourcen dem OS zurückgegeben werden. Nach dem join() ist dein Programm wieder single threaded.

  2. #2
    HaWe
    Gast
    das klingt aber nach einem "stoppen und aufräumen", nicht nach "beitreten"...

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    @HaWe schau bitte meinen Beitrag auf Seite 1 nochmal an, das hat sich beim tippen gerade überschnitten und ist auf Seite 1 letzter Beitrag untergegangen, da erkläre ich dir exemplarisch warum du "joinen" musst ... Threads könne nicht einfach so miteinander reden
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #4
    HaWe
    Gast
    "beitreten" bedeutet doch, dass etwas nach wie vor weiterläuft, nur jetzt gemeinsam, nicht mehr getrennt...
    (hat sich überschnitten)

    - - - Aktualisiert - - -

    @Ceos:
    ja, das hatte ich gelesen - aber nicht verstanden.
    Mir geht um die Wortbedeutung von "join", und das heißt "verbinden, beitreten", nicht "beenden".
    "stoppen und aufräumen" würde ich verstehen.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    join bedeutet aber auch vereinigen

    https://dict.leo.org/englisch-deutsch/join

  6. #6
    HaWe
    Gast
    ja, aber vereinen bedeutet: es läuft weiter, gemeinsam unter 1 Dach.

    wenn 1 thread jede Sekunde etwas ausgibt und unabhängig ein anderer thread etwas berechnet ,
    und jetzt wird gejoint (vereint),
    dann machen beide alles weiter, aber nicht mehr simultan nebeneinander sondern jetzt nacheinander (aneinandergehängt).

    "join the army" bedeutet ja auch: der Army beitreten und mitmachen, und nicht aus ihr austreten oder (sofort) sein Leben beenden...
    Geändert von HaWe (13.06.2019 um 13:32 Uhr)

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    Mir geht um die Wortbedeutung von "join", und das heißt "verbinden, beitreten", nicht "beenden".
    "stoppen und aufräumen" würde ich verstehen.
    Darum ja mein Beispiel mit dem Kollegen udn der Flex ... solange der Kollege am schleifen und schneiden ist und seinen Lärmschutz und Schutzbrille aufhat, kannst du winken, schrein, fuchteln, wedeln .... er bekommt nix mit!!!!

    Du musst ihn erst auf die Schulter klopfen (join) um ihm dann zu sagen er kann Feierabend machen ... der Kollege muss sich dann aber SELBER darum kümmern aufzuräumen und nach Hause zu gehen!

    Ein "kill" ist so als würdest du ihn einfach von jetzt auf gleich aus der Tür schmeißen und DU müsstest dann alles Aufräumen ... da es aber nicht dein Arbeitsplatz ist KANNST DU ES NICHT! Du kannst bestenfalls selber nach Hause gehen und vor dem verlassen noch alles anzünden und morgen von vorne anfangen.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  8. #8
    HaWe
    Gast
    ja, ok, trotzdem ist das, was er machen soll, ja nicht in den main thread kommen und weitermachen mt dem, was er bisher tut (join), sondern aufhören und aufräumen (stop_and_cleanup)

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    Und um hier nochmal zu erklären warum das so kompliziert sein muss:

    Threads haben einen eigenen Kontext in dem sie arbeiten und in dem alle Daten als vertrauenswürdig erscheinen!
    Ein Thread KANN THEORETISCH hingehen und Variablen in einem anderen Thread verändern wie es ihm beliebt ... ob der andere Thread damit klarkommt oder einfach ins leere greift, weil du die Flex auf einen anderen Platz gelegt hat ist fragwürdig und daher von den meisten Thread Bibliotheken verboten und resultiert zum Beispiel in Java in einer Exception wegen falschem Thread Zugriff!

    Man kann sogenannte ATOMICS einsetzen, dabei werden Passagen des Programms innerhalb eines Threads für "nicht unterbrechbar" erklärt und niemand kann während dieser Sequenz irgendwelche Variablen verändern oder die Ausführung dieser Sequenz behindern/beenden

    Man kann auch überall yield() oder sleep() einsetzen, wann immer man der Überzeugung ist, dass alle Variablen und auch der Zustand des Threads es erlauben die Kontrolle über das Programm an einen anderen Thread abzugeben, welcher dann nach belieben Variablen in dem wartenden Prozess zu verändern. Bei Microcontrollern REICHT DIESE METHODE VOLLKOMMEN AUS!!!

    Bei Mehrkernsystemen kann es aber dazu kommen, dass das yield() ignoriert wird und der Thread weiterarbeitet, weil es mehr als einen echten Kern gibt! Also kann es sein, dass Thread A estwas in Thread B verändern will, der aber stur weiterarbeitet und du somit keinen Zugriff erhälst (laute Flex, eingeschränkes Gehör und Sicht) ... also musst du joinen/anklopfen ... und dann macht Thread B an einer der definierten Stellen (yield(), sleep(),...) eine ECHTE Pause und wartet dass du dein Join beendest und er weiter machen kann!

    ACHTUNG WICHTIG falls du den Merhkernpart übersprungen hast weil er dich nicht trifft, ist es dennoch gute Praxis immer ein join/mutex/atomic zu nutzen um konsistente daten zwischen den Threads zu gewährleisten!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 01.11.2017, 12:53
  2. Antworten: 2
    Letzter Beitrag: 15.06.2011, 21:18
  3. "Optimization" macht debuggen schwer
    Von yaro im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 05.02.2010, 20:40
  4. "Soft-Reset?" und "Finger-Interrupt?"
    Von trapperjohn im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 10.06.2008, 23:02
  5. ASM: was machen "swap" und "cbr" genau?
    Von RHS im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 18.08.2004, 17:16

Berechtigungen

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

12V Akku bauen