“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

  • 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

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2008-03-25 00:41822
用户头像

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

关注

评论

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

Comparison between IPQ9574 and IPQ9554 | MLO EHT Solution Unveils the WiFi 7 CPU for Industrial

wallyslilly

亚洲杯+欧洲杯+奥运会观赛“体育直播平台”如何开发方法

软件开发-梦幻运营部

最佳在线项目管理网站揭晓:2024年全方位对比15大热门工具

PingCode

项目管理 项目管理工具

一文深度解读多模态大模型视频检索技术的实现与使用

阿里云视频云

云计算 大模型 视频云

SWAP/DEX去中心化交易所开发

西安链酷科技

swap链游 合约交易所开发

10个适合后端程序员的前端框架

快乐非自愿限量之名

程序员 前端 前端框架

一个响指,代码生成!华为云CodeArts Snap正式公测

华为云PaaS服务小智

人工智能 华为云

苹果电脑实用工具:Unclutter for mac 下拉菜单隐藏工具

南屿

BRC20铭文跨链系统开发技术

西安链酷科技

BRC-20 铭文币

下一代软件架构,如何构建微服务核心能力

阿里巴巴云原生

阿里云 Serverless 微服务 云原生

减少文件体积优化性能,你的姿势对了吗?

Yestodorrow

云原生 前端开发 可观测性 用户体验 网站性能

为什么跨境电商成为海外云手机的主要受众群体?

Ogcloud

云手机 海外云手机 跨境电商云手机 云手机海外版

17 位社区大咖寄语,Seata 进入 Apache 孵化器

阿里巴巴云原生

Apache 阿里云 云原生 seata

otc承兑商支付系统开发 otc承兑商支付模式系统开发

西安链酷科技

软件测试学习笔记丨Flask环境安装

测试人

软件测试

正式发布!《ICPMM行业云平台运营管理能力成熟度》系列标准来了!

天翼云开发者社区

云计算 云服务 企业上云

低代码是软件开发的未来吗?

这我可不懂

软件开发 低代码开发 JNPF

选择海外云手机需要考虑什么?

Ogcloud

云手机 海外云手机 云手机海外版

使用云手机运营TikTok,实现更多可能性

Ogcloud

云手机 海外云手机 tiktok云手机 云手机海外版

低代码开发业务在AIGC时代的应用

EquatorCoco

人工智能 低代码 AIGC

Higress 开源一周年:新版本,新标准,新工具,新征程

阿里巴巴云原生

阿里云 开源 云原生 Higress

在线视频转Mp3软件4K YouTube to MP3中文直装版

南屿

音频提取工具 音频转换 MP3

区块链开发项目:构建去中心化未来的蓝图

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

探索 Vue 3.0 下的低代码创新

不在线第一只蜗牛

低代码 开发 Vue3 API

软件测试学习笔记丨Linux数据处理

测试人

软件测试

AI for Good | AI+环保,点亮可持续的智能未来

澳鹏Appen

人工智能 AI向善 环境保护

大模型+知识图谱双驱架构:新一代《知识语义框架SPG》白皮书

机器智能社区

知识图谱 大模型

做dapp的开发公司有哪些

西安链酷科技

DAPP系统开发

BRC20铭文合约代币系统开发

西安链酷科技

铭文开发

传统外贸和代购独立站的区别

tbapi

传统外贸 外贸独立站

连续四次登顶!天翼云稳居中国专属云服务市场第一

天翼云开发者社区

云计算 云服务 IDC

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