Eine Liste von Spielern als ein Satz definiert:entfernen Element aus einem Satz nur, wenn Element in es
(def players (atom #{}))
Funktion, die Spieler entfernt sollte auf verschiedene HTTP-Codes zurückgeben basierend, ob Element in der Menge war oder nicht :
(defn remove-player [player-name]
(if (contains? @players player-name)
(do (swap! players disj player-name)
(status (response "") 200))
(status (response "") 404)))
Das Problem mit diesem Code ist, dass es eine Anfrage mehr 200
auf gleichzeitige Anforderungen zurückkehren könnte, auch wenn sie eigentlich nur das Element entfernt.
Ich denke, ich muss sowohl contains?
als auch disj
atomar ausführen. Muss ich explizit sperren oder gibt es einen besseren Weg?
Sie können sich bewegen, wenn Bedingung '' 'swap!' '' Funktion machen beide '' 'enthält?' 'Und' '' disj'' nennt atomare. –