相关疑难解决方法(0)

如何在Clojurescript中实现Atoms?

Clojure中解决并发问题我们可以使用atom来编写:

user=> (def my-atom (atom 0))
#'user/my-atom

user=> @my-atom
0

user=> (swap! my-atom inc)
1

user=> @my-atom
1

user=> (swap! my-atom (fn [n] (* (+ n n) 2)))
4
Run Code Online (Sandbox Code Playgroud)

我们知道这(在Clojure实现中)是Java Atomic对象的包装器.

有趣的是,Atoms 在C语言中以句法级别复制 - 即使JavaScript运行时没有原子参考.

我的问题是,如何在Clojurescript中实现Atoms?它们只是一个对象包装器吗?

concurrency multithreading atomic clojure clojurescript

6
推荐指数
1
解决办法
2307
查看次数

Clojure STM与原子和代理形式有关系吗?

我正在研究Clojure中的并发编程. http://clojure.org/concurrent_programming

我知道atom,refagent表单用于维护程序状态.

只有ref用于协调更新,因此在执行更改时使用dosync宏.

所以很明显STM引擎就在这一点上.

只是想明确我的怀疑,

Clojure STM是否也与原子和代理形式有关系?或者他们只是利用java.util.concurrent.atomic功能?

clojure stm

2
推荐指数
1
解决办法
361
查看次数