(MultiThread) Muss ich auch Integer gegen Inkonsistenz sichern ?



  • Hallo Leute.

    Muss ich wenn ich eine Integer Variable (oder bool) in 2 Threads verwende auch ne CriticalSection oder was vergleichbares verwenden?
    Weil eigentlich können ja bei so kleinen Datentypen die mit einem Prozessorbefehl bearbeitet werden keine Inkonsistenzen entstehen !?

    Gruß Jens


  • Mod

    Den lesenden Zugriff auf einen integer musst Du nicht absichern...
    Wenn Du z.B. eine boolsche Variable hast, die einem Thread sagen soll "nun ist Schluß, terminiere endlich" ist für diese keine Crtical Section nötig.



  • Hallo Martin.

    Danke für die schnelle Antwort 🙂

    Kannst du mir auch sagen warum ich einen schreibenden Zugriff auf einen Integer absichern muss ? Sind doch alles 1 Befehl Operationen die ein Integer manipulieren. Was könnte da schief gehen ?


  • Mod

    Habe ich das so geschreiben.
    Wenn e sum besagtes Flag geht das aus Thread1 für Thread2 gesetzt wird ist es egal.

    Die Frage ist was mit dem Schreiben verbunden ist...
    Aber auch das setzen eines Wertes ist in diesem Sinne atomar!



  • thread 1 holt wert aus dem speicher
    thread 1 addiert diesen wert
    thread 2 holt den selben wert aus dem speicher
    thread 1 schreibt den wert in den speicher

    Jetzt hat thread 2 den alten wert...
    oder verstehe ich da etwas falsch?


  • Mod

    Richtig! In diesem Fall wird eine Threadsynchronisation benötigt.
    Hier ist der Vorgang ja auch nicht atomar.

    Nicht aber, wenn Thread1 nur die daten schreibtund Thread2 prüft was gesetzt ist... 😉

    Es kommt immer darauf an.


Anmelden zum Antworten