写点什么

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:161787

评论

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

SpringCloudAlibaba 微服务组件 Nacos 之配置中心源码深度解析

程序员小毕

微服务 后端 nacos 架构师 java面试

一文了解 DataLeap 中的 Notebook

字节跳动数据平台

大数据 火山引擎 DataLeap

EMR with TiSpark(on EKS )

TiDB 社区干货传送门

TiKV 源码阅读三部曲(二)读流程

TiDB 社区干货传送门

API 网关 Apache APISIX 3.0 版本正式发布!

API7.ai 技术团队

Apache 开源 APISIX 新版本/特性发布

用技术为内容注入生命力,华为视频持续升级影音体验

科技汇

TDSQL-C真·秒级启停:连接断了,又没断

腾讯云数据库

数据库 腾讯云 TDSQL-C 腾讯云数据库

大数据中,LED显示屏行业的两大服务和四大功能

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

科普|渲染农场与超级计算机有什么不同?

Finovy Cloud

人工智能 深度学习 图像处理 云渲染 渲染农场

DDL 毫秒级同步,Light Schema Change 的设计与实现|新版本揭秘

SelectDB

数据库 大数据 Doris schema 企业号十月 PK 榜

PingCAP 携手阿里云,探索 TiDB 云原生的进阶之路

TiDB 社区干货传送门

集合管道模式(上)

冰心的小屋

集成管道模式 pipline

Centos7 gcc4.8.5升级到版本gcc5.4.0

A-刘晨阳

Linux 运维 11月月更 gcc5.4

Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)

A-刘晨阳

Linux 运维 GCC 11月月更 gcc5.4

还不会日志异常检测?看完这篇文章就够了!

云智慧AIOps社区

人工智能 机器学习 大数据 日志分析 异常日志

华为全联接大会2022丨华为云打造可信认证体系,加速开发者成长

华为云开发者联盟

云计算 后端 华为云 企业号十月 PK 榜

峰会实录 | 镜舟科技CEO孙文现:基于StarRocks打造企业级极速统一数据分析产品

StarRocks

数据库·

双机热备软件哪家好?有哪些功能?咨询电话多少?

行云管家

高可用 热备 双机热备

如何通过Java 在 Word 中更改字体颜色

Geek_249eec

word java;

【杭州专场】蚂蚁单测自动生成产品体验活动招募开启

TRaaS

实践一年之久,vivo 如何基于 APISIX 进行业务基础架构的演进

API7.ai 技术团队

开源 云原生 API网关 APISIX 客户案例

TiDB 2022 Hackathon 产品组决赛“不负责任”点评

TiDB 社区干货传送门

Java Web(三)HTML和CSS

浅辄

Java web HTML5, CSS3 11月月更

探讨:2023 年 WEB 3 的 5 大趋势

开发微hkkf5566

TiDB 的 graceful shutdown

TiDB 社区干货传送门

保定有几家等保测评机构?咨询电话多少?

行云管家

等保测评 等级测评 等保测评机构 保定

鸿蒙生态汇聚200万+开发者,金山办公、京东分享高效开发新体验

叶落便知秋

Web3.0 中的去中心化身份

开发微hkkf5566

久等了,青年技术沙龙北京发车!

小红书技术REDtech

案例故事丨MySQL or TiDB?HTAP 数据库在中国 SaaS 行业头部服务商的应用实践

TiDB 社区干货传送门

如何使用清源 CleanSource SCA 管理开源风险

安势信息

SCA SBOM 清源CleanSource SCA 开源风险

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