AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

评论

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

“满血版AI”如何进入智慧家庭?答案在华为FTTR星光F60

脑极体

AI

虾皮(shopee)商品列表API接口详解

tbapi

shopee API shopee商品详情接口 shopee商品列表接口

BOE(京东方)位列2024年PCT国际专利申请榜全球第6 创新引擎推动产业高质发展

科技热闻

「DeepSeek-V3 技术解析」:多头潜在注意力机制(MLA)

Baihai IDP

程序员 AI LLM DeepSeek v3 MLA

传统零售行业数字化转型,如何破局电商冲击与多变需求?

Techinsight

数据分析与AI丨利用知识图谱实现 AI Fabric 治理

Altair RapidMiner

人工智能 AI 数据分析 知识图谱 RapidMiner

【直播预告】“大模型加速器2.0”版本即将开箱!

合合技术团队

人工智能 算法 图像识别 #大数据

征程 6 VP简介与单算子实操

地平线开发者

自动驾驶 算法工具链 地平线征程6

AI Agent成大模型落地“接盘侠”,百度、智谱AI等国内巨头齐发力,你了解多少?

Techinsight

助力出海!德国铁路与宝马车厂应用IoTDB数字化解决方案

Apache IoTDB

高效通过等保:哈尔滨等保整改方案,70分合格一键落地

黑龙江陆陆信息测评部

互联网技术 等保评测 黑龙江

实验室辅助管理系统(源码+文档+讲解+演示)

深圳亥时科技

边缘计算学习资料,边缘计算架构设计和技术应用

金陵老街

边缘计算

Agent 智能体创作大赛+参赛小分队召集

声网

SvelteKit 最新中文文档教程(5)—— 页面选项

冴羽

vue.js 前端 React Svelte SvelteKit

爬虫+动态代理助力 AI 训练数据采集

袁袁袁袁满

代理IP Python爬虫 爬虫实战 免费代理

干货!传统工厂数字化转型,从规划到落地的实战要点

Techinsight

【GreatSQL优化器-17】DYNAMIC RANGE

GreatSQL

成长太慢,选择跳槽还是提升能力?

老张

能力提升 职场成长

Zoom 全线产品引入 Agent,实现语音转录总结和语音客服等功能;谷歌云推出 TTS 模型 Chirp 3丨日报

声网

央国企数字化转型难点重重,如何破局?

Techinsight

阿里云 AI 搜索产品荣获 Elastic Innovation Award 2024

阿里云大数据AI技术

人工智能 elastic GenAI AI搜索

工厂安全审计系统(源码+文档+讲解+演示)

深圳亥时科技

陆陆小科普:让你做黑龙江等保测评整改,少走弯路

黑龙江陆陆信息测评部

等保测评 网络安全信息安全、 哈尔滨 黑龙江

从 0 到 1 掌握鸿蒙 AudioRenderer 音频渲染:我的自学笔记与踩坑实录(API 14)

李游Leo

HarmonyOS

AI技术赋能企业财务管理,用友BIP创新五大智能财务场景

用友智能财务

AI 财经 数智化 会计

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