Clojure并发编程:代理、STM与并发管理实践
1. 利用代理管理程序复杂性
Clojure提供了简单的并发机制,无需担心值同步、锁、监视器、信号量等复杂问题。代理基于STM构建,每个代理类似于一个引用,通过向代理发送消息(即操作代理状态的函数)来使用代理,这些消息在线程池中运行。
1.1 准备工作
在 project.clj 文件中包含相同的引用,在REPL中包含相同的依赖项,使用相同的输入文件 data-file ,并使用之前的几个实用函数: lazy-read-csv 、 with-header 、 ->int 、 sum-item 和 sum-items 。
1.2 具体操作步骤
- 定义
accum-sums函数 :用于对代理的输出进行逐对加法。
(defn accum-sums [a b] (mapv + a b))
- 定义
div-vec函数 :用于将一对数字相除,以生成每个住房单元的家庭比例。
(defn div
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



