使用GPars解决常见并发问题 - 编程入门网
def api = new Twitter()
def resultStream = new DataFlowStream()
def tags = [''#erlang'',''#scala'',''#clojure'']
GParsExecutorsPool.withPool {
tags.each {
{ query -> recentTweets(api, query, resultStream) }.callAsync(it)
}
}
int doneMessages = 0
while(doneMessages < tags.size()) {
msg = resultStream.val
if(msg == "DONE") {
doneMessages++
} else {
println "${msg}"
}
}
使用GPars解决常见并发问题(10)时间:2012-03-17 IBM Alex Miller注意,“DONE” 消息被通过数据流从每个后台线程发送到结果侦听程序。表示线程发送结果任务已完成的指标有时在消息传递领域称为 “毒消息”。它充当 producer 与 consumer 之间的信号。 管理状态的其他方法 本文中未涉及的两个重要并发模型是通信顺序进程(CSP)和软件事务内存(STM)。 CSP 基于 Tony Hoare 的经典之作中对并发程序行为的正式规范,且基于进程和通道的核心概念。进程在某些方面与前面讨论的 actor 模型类似,而 通道与数据流有很多相似之处。CSP 进程与 actors 的不同之处在于,它比单个邮箱有更丰富的输入和输出通道集。GPars 包含一个 API,完成 CSP 思想的 JCSP 实现。 STM 过去几年中一直是一个活跃研究领域,Haskell、Clojure 和 Fortress 等语言包括(有点不同)该概念的实现。STM 需要程序员在源代码中划分事务界限,然后系统向底层状态应用每个事务。如果检测到冲突,可以重试事务,不过它是自动处理的。然而,GPars 不包括 STM 的实现,但是将来有可能会包括。 结束语 并发性目前是一个热门领域,各种语言和库采用的方法之间有诸多混杂。GPars 采用目前一些最流行的并发模型,通过 Groovy 使其在 Java 平台上可访问。 带有大量核心的计算机占据很大地位,而且事实上在芯片上可用的核心的数量呈指数级上升。相应地,并发性会继续成为一个探索和革新领域;我们得知,JVM 将成为最持久方案之源。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |