QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

软件性事务:一种编程语言的视角

  • 2008-03-25
  • 本文字数:1420 字

    阅读完需:约 5 分钟

Erlang,一种可以让并发兼得优美与效率的语言,最近受到了很大的关注。特别是人们把Erlang 看作是多核处理器下的一种自然编程语言。Erlang 的一个核心设计概念就是“进程”实例之间没有共享存储,它们的通信只能依靠异步消息。然而,共享存储形式的并发仍然是一个强势的研究课题。

上周,UWTV 的Dan Grossman 发布了一段 Webcast ,“软件事务:一种编程语言的视角”。它展示了事务性存储的当代最新发展。Dan 还在Google 和UC Berkeley 做了相关的报告。

Dan Grossman 是华盛顿大学计算机科学与工程学院的一名助理教授。他的研究领域包括编程语言的设计、实现和理论。

Dan 的报告所关注的是事务对于编程语言的语义和实现会带来哪些影响,并探讨了可伸缩的多线程事务的发展:

多核处理器会引爆并行计算,因此当务之急是降低并发编程的难度。为了简化共享存储形式的并发,软件性事务(Software Transaction)承载了太多承诺,它在最近的十多年里受到了来自研究团体的强烈关注。

他还在事务性存储和垃圾回收之间做了一个有趣的对比:

事务性存储(TM)之于共享存储并发犹如

垃圾回收(GC)之于内存管理

他解释说,并发编程的困难类似于内存管理,你需要平衡正确性和性能。他也讨论了非模块化的调用者和被调用者之间必须知道彼此,因此通常一个微小的修改都会导致大规模的代码变化。

他认为问题的解决方案是把手动编码的协议迁移到语言的实现中,就像 GC 一样,尽管他也承认事务性存储不是一个完善的解决方案,比如遇到下面这种情况时:

内存冲突严重到近乎无法并行执行的程度。

Dan 为三种不同的隔离级别引入了源码级的形式化语义:

  • “强(Strong)”:如果一个线程在执行一个事务,那么没有其他的线程可以使用共享存储或者进入这个事务。
  • “弱 -1- 锁(Weak-1-lock)”:如果一个线程在执行一个事务,那么没有其他的线程可以进入这个事务。
  • “弱 - 撤销(Weak-undo)”:与“弱 -1- 锁”相同,并且允许事务在任何点异常中断,然后撤销修改并重新启动。

他提起了一个被广泛误解的概念:

“弱”隔离只有在相应的锁代码中存在竞争时才会违反“all-at-once”特征。

接下来,Dan 提出了几个关键的定理,包括下面这个:

“弱 - 撤销”允许某些“弱 -1- 锁”不允许的行为

在他报告中的第二部分里,开始关注如何把这些语义应用到多核系统中。首先,Dan 指出了单处理器是一种重要的特例:

  • 通过共享存储进行通讯的多个线程不能真正地并行执行
  • 很多编程语言的实现都假设单处理器的存在
  • 多核系统为应用程序分配单个核

Dan 认为在单处理器体系结构下,实现事务性存储的强隔离只需要很小的开销。因为内存访问的开销很低,而且回滚操作很少。另外只有写操作才被记录下来。他还提供了一些可以应用在字节码级的静态优化的例子,这种优化能够提升非事务性代码的性能。

Dan 的团队正在研究多线程下的事务。他对一个被普遍认可的重要假设提出了质疑:

大多数语言实现都假设事务中执行的代码是单线程的,但是隔离和并发是两个互不影响的概念( Amdahl 定律将受到多核的冲击)。

Dan 认为有很多理由可以做这样的假设,因为它能简化实现。随着芯片内核的数量的增加,这个假设会导致系统性能的下降。如果不做这样的假设,你需要在语言层面上引入内嵌的事务。他还指出,为了获得可伸缩的能力,必须解决 logging 操作的并行化这个重要问题。Dan 还想知道什么时候才真正需要修正 Amdahl 定律,他猜测可能是在核的数量达到几百个的时候。

查看英文原文: Software Transactions: A Programming Language Perspective

2008-03-25 00:41992
用户头像

发布了 53 篇内容, 共 14.0 次阅读, 收获喜欢 2 次。

关注

评论

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

测试开发 | 人工智能与大数据的融合:创新、应用与未来趋势

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

测试

低代码平台在自动驾驶系统开发中的应用

不在线第一只蜗牛

自动驾驶 低代码 交通

测试开发 | 无监督学习与聚类算法:数据中的潜在结构解析

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

测试

监督学习算法详解:模型训练、分类与预测

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

测试

如何评估 RAG 应用的质量?最典型的方法论和评估工具都在这里了

Zilliz

评估 AIGC LLM rag

全国范围AOI数据2023年12月更新,共计超过234.5万个(AOI数据更新系列)

Geek_f9782a

Allins 官网正式上线,铭文赛道进入 AMM 交易时代

股市老人

测试开发 | 从原理到实战,四天带你轻松进阶Python

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

测试

测试开发 | 神经网络架构与设计:探索人工智能的大脑

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

测试

软件测试/测试开发丨Web端测试—CSS讲解 学习笔记

测试人

软件测试

低代码技术:颠覆数据孤岛的技术利器

快乐非自愿限量之名

数据 低代码 数据孤岛

Allins 官网正式上线,铭文赛道进入 AMM 交易时代

石头财经

Allins 官网上线,标志铭文赛道正式进入 AMM 交易时代

BlockChain先知

实施管家式运维:为企业打造 定制化IT支持体系

太乙闲人

测试开发 | 数据挖掘在人工智能中的作用:洞察、预测与创新

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

测试

解读 $mash 通证 “Fair Launch” 规则,将公平发挥极致

股市老人

IPQ9574 and QCN9274: Explore the WiFi7 MLO feature Test with Wallys DR9274

wallyslilly

qcn9274 ipq9574

TuGraph Analytics交互式图查询:让图所见即所得

TuGraphAnalytics

图分析 图查询 图可视化

苹果市值一夜蒸发 1071 亿美元;「团结引擎创世版」发布丨 RTE 开发者日报 Vol.118

声网

语音AI小夜灯项目

芯动大师

Allins 官网正式上线,铭文赛道进入 AMM 交易时代

西柚子

Allins 官网正式上线,铭文赛道进入 AMM 交易时代

小哈区块

shopee虾皮商品详情数据接口(Shopee.item_get)丨shopee虾皮API接口

tbapi

shopee商品详情数据接口 shopee API 虾皮shopee详情数据接口 虾皮商品详情数据接口

Mycat分库分表实时同步到GreatSQL

GreatSQL

数据迁移 greatsql

什么是DePIN,2024年需要了解的DePIN项目

TechubNews

区块链 DePIN

【JAVA】AI医疗智能导诊系统源码

源码星辰

Java 源码 智能导诊

测试开发 | Python-列表

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

测试

极狐GitLab Helm Chart 已上线,玩转云原生极狐GitLab!

极狐GitLab

软件性事务:一种编程语言的视角_架构_Jean-Jacques Dubray_InfoQ精选文章