Skip to content

Instantly share code, notes, and snippets.

@minikomi
Created December 6, 2017 09:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save minikomi/0bf7bedb64767a832be172c5b0767d1e to your computer and use it in GitHub Desktop.
Save minikomi/0bf7bedb64767a832be172c5b0767d1e to your computer and use it in GitHub Desktop.
(let [v (atom [0 0 0 0 0])
threads (for [i (range 5)]
(let [t (Thread.
(fn []
(dotimes [_ 1000] (swap! v update i inc))
))]
(.start t)
t))]
(doseq [t threads] (.join t))
@v)
(let [v (volatile! [0 0 0 0 0])
threads (for [i (range 5)]
(let [t (Thread.
(fn []
(dotimes [_ 1000] (vswap! v update i inc))
))]
(.start t)
t))]
(doseq [t threads] (.join t))
@v)
(let [v (transient [0 0 0 0 0])
threads (for [i (range 5)]
(let [t (Thread.
(fn []
(dotimes [_ 1000] (assoc! v i (inc (get v i))))
))]
(.start t)
t))]
(doseq [t threads] #(.join t))
(persistent! v))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment