var vs. atom für Laufzeitkonstanten

8

Basierend auf der Eingabe über die Kommandozeile muss ich einige Laufzeit-Konstanten setzen, die eine Anzahl von Downstream-Funktionen verwenden wird. Der Code in diesen Funktionen kann in anderen Threads ausgeführt werden, sodass ich die Kombination "declare var und use binding macro" nicht in Betracht ziehe. Was sind die Vor-und Nachteile der Verwendung einer Var (mit alter-var-root) dafür im Vergleich zu einem Atom? Das heißt,

%Vor%

versus

%Vor%

Wenn es neben diesen beiden eine andere Option gibt, die ich berücksichtigen sollte, würde ich es gerne wissen.

Im Idealfall hätte ich dem Atom auch kein Initialwert gegeben, weil ich an anderer Stelle (mit dem CLI-Aufruf) Standardwerte setzen möchte, aber ich kann damit leben, besonders wenn die Verwendung des Atoms Vorteile im Vergleich zu bietet die Alternative (n).

    
Don 14.01.2013, 04:45
quelle

3 Antworten

6

Einmalige Werte sind genau die Anwendungsfälle, die für Folgendes vorgesehen sind:

%Vor%     
amalloy 14.01.2013 06:47
quelle
3

AFAIK alter-var-root garantiert nur die Änderung von synchronisierten Variablenwerten und garantiert kein sicheres Lesen während dieser Änderung. Auf der anderen Seite bietet atom wirklich eine atomare Änderung des Identitätsstatus.

Wenn Sie keinen Anfangswert angeben möchten, können Sie ihn einfach auf nil :

setzen %Vor%     
mobyte 14.01.2013 05:52
quelle
2

Was ist falsch daran, nur eine Variable und alter-var-root zu verwenden? Sie legen den neuen Wert in Ihrer Startfunktion fest, bevor Sie die Worker wirklich starten. Es gibt also kein Rennen im Lesen. Und Sie können @ überall dort speichern, wo Sie den Wert benötigen.

    
kotarak 14.01.2013 10:45
quelle

Tags und Links