(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
-
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 ?
-
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 speicherJetzt hat thread 2 den alten wert...
oder verstehe ich da etwas falsch?
-
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.