11 Stimmen

Race Conditions und Clojure-Atome

In der Dokumentation für das Clojure-"Atom" heißt es, dass -

"Changes to atoms are always free of race conditions."

Eine Wettlaufbedingung wird jedoch nicht nur im Hinblick auf eine Änderung definiert, sondern vielmehr im Zusammenhang mit parallelen logischen Operationen in verschiedenen Threads.

Ich frage mich, welche Bedeutung die Garantie hat, dass "Änderungen an Atomen sind immer frei von Wettlaufbedingungen" ? In Java haben wir atomare Primitive, die bestimmte thread-sichere Operationen unterstützen, die spezifisch sind (zum Beispiel unterstützt AtomicInteger eine "getAndIncrement"-Operation). Aber Clojure-Atome sind typ-agnostisch, zum Beispiel können wir :

  (atom "Hi im a string")  Or
  (atom (.getClass Object))

Die Flexibilität der Atom-Methode bedeutet, dass Clojure unter der Haube nicht "intelligent" typspezifische atomare / thread-sichere Operationen für Atome bereitstellt.

Daher möchte ich fragen, was genau die Atom-Methode mit unseren Objekten "macht" (d.h. synchronisiert sie einfach das gesamte Objekt?)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X