QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Dataflow:Ruby 的声明式并发控制模型

  • 2009-05-12
  • 本文字数:867 字

    阅读完需:约 3 分钟

由于 Ruby 语言受到了一些函数式程序设计技术的影响,有些 Ruby 程序员随之采纳了 Erlang 或者 Haskell 的思想,甚者建立起了从 Ruby 到这些语言的桥梁,比如: Erlectricity

Larry Diehl 基于 Oz 语言的 Unification 概念,为 Ruby 引入了声明式并发控制模型。Oz 是一种多维编程语言,它主要作为一种函数式(包括延迟计算和即时计算)、分布式和并发编程语言而著称,但同时它也支持约束、逻辑、命令式和面向对象编程。

随着计算机中核心处理器数量的不断增加,Larry 希望声明式并发模型能给 Ruby 语言带来一些好处

  • 更加易读的代码
  • 简单但强大的并发控制

为了实现这个目标,Larry 应用了《Concepts, Techniques, and Models of Computer Programming》一书中描述的数据流线程行为(Dataflow threading behavior)概念:

如果一个操作试图使用一个未绑定的变量,该怎么办?如果纯粹从审美角度来看,这个操作应该等待,直到其它线程绑定了这个变量再继续进行。这种“文明礼貌”的线程行为被称之为数据流线程行为(Dataflow threading behavior)。

为了用 Oz 实现这个概念,Larry 应用了 Unification:

Unification 的思想是用逻辑方程来描述值,而逻辑方程可以自动被一些合一算法(unification algorithm)所解决。

那么在实际应用中,我们就可以这样编写代码了(这段代码来自 Dataflow 项目网站):

复制代码
# Local variables
include Dataflow
local do |x, y, z|
# notice how the order automatically gets resolved
Thread.new { unify y, x + 2 }
Thread.new { unify z, y + 3 }
Thread.new { unify x, 1 }
z #=> 6
end

用 local 或者 declare(实例变量)创建一些变量,然后用 unify 来绑定这些变量。

Oz Ports (非确定行为) 或者 Erlang 化 Actors 就是两个很好的例子。

但 Brian Morearty 也指出了对 Dataflow 调试、性能和内存的一些有意思的担心 。随后 Larry Diehl 在 Brian 的博客中进行了解释

有一点需要注意的是,由于这个库支持绿色线程(green threads)和本地线程池实现,它已经让 JRuby 在 MRI 上光芒四射了。

查看英文原文: Declarative Concurrency For Ruby With Dataflow

2009-05-12 00:162014

评论

发布
暂无评论
发现更多内容

如何将 Python 项目打包成 exe,另带卸载功能!

北桥苏

Python GUI pyinstaller tkinter Inno Setup Compiler

实时湖仓技术选型,企业如何借实时湖仓赢在“数据驱动”时代

袋鼠云数栈

大数据 数据湖 湖仓一体 实时湖仓

一键生成PPT!让AI成为您的最佳帮手!

飞桨PaddlePaddle

人工智能 深度学习 PPT

ApeCoin DAO猿岛质押游戏系统开发:APE开岛屿-质押藏宝箱获得代币

l8l259l3365

软件测试/测试开发|测试开发线下高薪私教班助力你的职场晋升

霍格沃兹测试开发学社

LLAMA预训练:大模型的潜力与挑战

百度开发者中心

人工智能 深度学习 大模型

从西工大安全事件浅谈特权账号管理系统

尚思卓越

数据库 网络安全

Databend 源码阅读: Meta-service 数据结构

Databend

喜讯!云起无垠斩获“东升杯”国际创业大赛“优秀奖”

云起无垠

大模型微调:适应新任务的强大工具

百度开发者中心

深度学习 大模型 Prompt

淘宝商品评论数据接口(Taobao.item_review)

tbapi

淘宝API接口 淘宝商品评论接口 天猫商品评论接口 淘宝评论内容接口 天猫评论内容接口

未来LED小间距显示屏竞争的焦点在哪里

Dylan

中国 产业‘’ LED LED显示屏 市场

In-depth comparison of QCN9074, QCN9024 and QCN9274 Qualcomm Wi-Fi chip families

wallysSK

如何优化 RAG 系统的性能表现?10 条实用策略

Baihai IDP

深度学习 程序员 AI 白海科技 rag

IPQ6010 vs. IPQ4019: The battle of Qualcomm chips and WIFI 6 vs WIFI 5

wallysSK

【最佳实践】京东小程序-LBS业务场景的性能提升 | 京东云技术团队

京东科技开发者

小程序 性能优化 前端 LBS

怀念一代传奇,陈皓与他的《左耳听风:传奇程序员练级攻略》

博文视点Broadview

2023 年中国金融级分布式数据库市场报告:TiDB 位列领导者梯队,创新能力与增长指数表现突出

编程猫

百度搜索创新大赛,一场2800人的技术狂欢

百度Geek说

人工智能 企业号12月PK榜 百度搜索技术大赛

Dataflow:Ruby的声明式并发控制模型_Ruby_Sebastien Auvray_InfoQ精选文章