快速业务通道

使用GPars解决常见并发问题 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-13
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号