Mutex nutzlos?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Mutex nutzlos?

Beitrag von NicTheQuick »

DarkDragon hat geschrieben:
NicTheQuick hat geschrieben:
ts-soft hat geschrieben:Naja, ich meinte auch nur die Lesezugriffe, hätte mich da wohl genauer ausdrücken müssen.
Selbst da kann es passieren, dass zwei Threads aus ein und der selben Variablen unterschiedliche Werte lesen, da jeder Thread auf einem anderen Core laufen kann und jeder Core seinen eigenen Cache hat. Ist bei beiden Cores diese Variable im Cache und ändert sie einer von beiden Threads, wird sie normalerweise nicht direkt in den Arbeitsspeicher geschoben oder in einen höheren gemeinsamen Cache, sodass der andere Thread den aktuellen Wert bekommen würde. Deswegen kann man normalerweise Variablen als atomic deklarieren. Diese werden nämlich immer frisch aus dem Arbeitsspeicher geholt und nach Änderung zurück in ihn geschrieben.
Atomic? Volatile wäre das doch, was du eben mit dem "höheren, gemeinsamen Cache" und "frisch aus dem Arbeitsspeicher" meinst. Aber dann braucht man immer noch atomarität der Zugriffe (locks drumrum), da ja auch echt parallel damit operiert werden kann, wodurch die Aussage über atomic wieder richtig wird. Atomic sichert jedoch nur Einzelzugriffe ab!
Danke für die Richtigstellung. Hab das länger nicht mehr gemacht und das jetzt etwas durcheinander geworfen. Du hast natürlich Recht. :wink:
Antworten