写点什么

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

评论

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

记一次ThreadLocal中的用户信息混乱问题

不在线第一只蜗牛

Java 数据库 oracle ThreadLocal

MySQL的安装与配置:从零开始搭建数据库环境

测吧(北京)科技有限公司

测试

Python中的封装与访问控制权限

测吧(北京)科技有限公司

测试

Pencils Protocol 宣布再获合作伙伴 Galxe 的投资

加密眼界

软件测试学习笔记丨MyBatis 数据库与实体类属性对应

测试人

软件测试

VALSE 2024合合信息 | 文档解析与向量化技术加速多模态大模型训练与应用

dvlinker

人工智能 机器学习 计算机视觉 多模态大模型 智能文档图像解析技术

【Ali】快速入门:在阿里云ECS上配置Windows系统实例指南

极客天地

用 Python 实现猜拳游戏:结合分支语句、运算符和列表

测吧(北京)科技有限公司

测试

深挖中建信息2023年年报,用数智化“创造价值”

脑极体

数智化

精通Python推导式:元组、列表、字典、集合

测吧(北京)科技有限公司

测试

报名倒计时|来蚂蚁C空间,参与一场开源隐私计算及 AI 技术与应用落地的探讨~

TRaaS

活动报名

【YashanDB知识库】ycm纳管主机安装YCM-AGENT时报错“任务提交失败,无法连接主机”

YashanDB

yashandb 崖山数据库

解锁QCon/AICon/ArchSummit/FCon 大会最新视频

极客时间

#Qcon

Python实现词频统计:利用列表、字符串操作和字典

测吧(北京)科技有限公司

测试

Python实现水仙花数的查找与验证

测吧(北京)科技有限公司

测试

Python类的构造方法与字符串表示

测吧(北京)科技有限公司

测试

【内容推荐】一课毕业,IoTDB 从入门到精通!

Apache IoTDB

必看!5个最实用TikTok运营工具分享!

Ogcloud

TikTok tiktok运营 tiktok直播

基于火山引擎云搜索的混合搜索实战

字节跳动云原生计算

ES 云搜索

全面掌握甲骨文云 OCI MySQL 服务:从自动运维到高效管理

极客天地

开发者选型:小程序原生or 小程序框架?

FN0

小程序 小程序框架 小程序发开

Pencils Protocol Season 2 收官在即,展望Season 3 及其权益

加密眼界

数据库客户端工具的使用

测吧(北京)科技有限公司

测试

CDN——提升您网站的性能

极客天地

程序中的循环

测吧(北京)科技有限公司

测试

软件测试 | Redis:性能最快的内存数据库及其基础使用

测吧(北京)科技有限公司

测试

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