2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

微软对软件内存事务的试验已告终止

  • 2010-05-31
  • 本文字数:1633 字

    阅读完需:约 5 分钟

Dana Groff 宣布,微软对.NET 框架上软件内存事务(software transactional memory,简称 STM.NET)的试验已告终止。这个研究项目始于 2008 年,被用于在处理并发问题时代替显式锁。

理论上 STM 和数据库事务很相似。理想情况下,多个线程不能同时访问同一块数据,脏读将不复存在,死锁则会被自动监测和处 理。然而这也带来了和数据库事务同样的问题,比如乐观锁还是悲观锁,锁的粒度以及对性能的影响。

相对于其它软件,数据库在数据的组织形式上具有优势。数据库中的行是原子单位,可以被当作一个整体进行加锁,读取和修改。并且由于每一行都被存储在固定的 位置,使得锁升级这样的技术得以实现,以避免过多细粒度锁。而在其它软件中,对象需要通过指针链来找到根对象,这导致语义分组无法使用,并引发这样的问 题:“在这种情况下,原子单位是什么?”

早在一月,微软最知名的并行与并发编程研究员 Joe Duffy,就在他的内存事务简要回顾中谈到了他对 STM 开始失望的四个原因。

第一个原因是 I/O 问题。大多数的 I/O 访问机制天生就是非事务性的,而且随着分布式计算的流行,这些问题更加不可避免。Joe Duffy 指的不仅是文件访问,还包括日志、web service 调用、用户交互以及平台间互操作。他还说到:

这个问题最终归结为:今后的趋势会是事务性的,还是非事务性的? 继续大力推广事务是否可以取得成功,本质上取 决于这个问题的答案。我们曾将支持事务的 NTFS 和注册表添加到 Vista,那时候这个问题的答案似乎是“事务性”。但是(目前)这个趋势却在急剧放缓。

第二个问题是关于原子性强弱的选择。简单来说就是,你要求事务性对象只能通过事务进行读写,还是把决定权交给开发人员。前一种方式在程序的事务性部分和非 实物性部分共享数据时会遇到麻烦,而后一种则非常容易引发错误。

第三个原因是边界问题。就像我刚才说的,一般的软件不像数据库那样有着清晰的边界。对于原子单位的定义可能会随着时间而改变。

我仍然清晰的记得那天,就好像是昨天一样。那是一个周项目例会,讨论项目的状况、未来、遇到的问题等等。一个暑期实习大学生喝着咖啡,用 TM 做着一些探索 工作,而我则喝着茶。某个实习生不经意的言语,指出了(系统的)一个毁灭性的缺陷,足以威胁到我们正在构建的(也是当时业界普遍使用的)TM 模型。这个问 题实际上已经存在一年多了,但我们却一直没发现。这就是哪种让我感到害怕,并使我相信正规计算机科学的时刻。 事务 Tx0 将 itIsOwned 设为 true 并提交,而在提交后 Tx0 将会在 TM 的范围外使用任何已被声明的状态(在这里指的是变量 x 所指向的对象)。同 一时刻,另一个事务 Tx1 乐观的读取 itIsOwned 值并得到 false,因此继续使用 x。对于实时更新的系统,这将允许这个事务(Tx1)无限制的任 意修改 x 的状态。当然在本例中由于 isItOwned 被修改为 true,Tx1 将会被回滚。但这已经太晚了:另一个在事务外使用 x 的线程将会看到 x 的状态 在不停的改变,从这时起谁也无法知道将会发生什么。这是一个在任何弱原子性、实时更新 TM 中都存在的缺陷。

这个例子并不是人为设计的,在很多情况下都会发生类似的事情。我们第一次发现这个问题的情形是,当一个事务从链表中移除结点时,另一个事务正在反转这个链 表。如果前一个线程相信它”拥有”这个被移除的结点,因为就是它自己将这个结点移除的,那么将得到不可预期的结果。

最后一个原因是 STM 缺少实际的成功案例,他写道:

我们一直在苦苦寻找杀手级的 TM 应用。当然将范围仅放在 TM 上不太公平,因为整个业界仍在寻找杀手级的并发应用。但后来我们发现的成功案例越多,我对今后 5 年内杀手级并发应用需要 TM 的信心就越少。对于大多数自然隔离的程序,例如那些处境尴尬的并行图像处理程序,如果有任何共享数据,那基本上就是有问题 了。

与其他很多微软研究项目一样,STM.NET 的代码和示例已经被撤下,论坛也将于近期关闭,只剩下 STM 编程手册与我们同在。

查看英文原文: Microsoft’s Experiments with Software Transactional Memory Have Ended

2010-05-31 08:463166
用户头像

发布了 63 篇内容, 共 26.2 次阅读, 收获喜欢 1 次。

关注

评论

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

基于豆包·视频生成模型打造创新体验,即梦成为“想象力的相机”

极客天地

火山引擎云基础、模型服务等多产品更新发布,为企业大模型应用落地再提效

极客天地

质变科技 AI-ready Data Cloud|从存算分离到Serverless,数仓要解决的关键问题

AI数据云Relyt

大数据 Serverless 数据仓库 数据湖 存算分离架构

天谋科技时序数据库 IoTDB 入选工信部中国电子信息行业联合会优秀创新软件产品推广目录

Apache IoTDB

SD-WAN加速海外SaaS访问速度

Ogcloud

网络加速 SD-WAN SD-WAN组网 SDWAN SD-WAN国际专线

为什么技术高管汇报一定要用数据说话?

思码逸研发效能

程序员 研发效能 IT管理 研发效能度量 管理技术团队

【YashanDB知识库】insert语句有编码不识别字,执行卡住问题

YashanDB

数据库

你敢信?清华毕业大佬用了一个坦克大战项目就讲完了23种设计模式

程序员高级码农

Java 编程 程序员 java面试 Java面试题

【YashanDB知识库】服务器重启后Yashandb无法启动

YashanDB

数据库 yashandb

KaiwuDB 智能综采应用项目获中国信通院数据库星河“典型案例”

KaiwuDB

数据库

质变科技 AI-ready Data Cloud|行列混存格式下的读链路优化

AI数据云Relyt

数据仓库 AI-ready 数据云

质变科技 AI-ready Data Cloud|如何构建 Auto Table Service 保证高性能查询

AI数据云Relyt

数据库 大数据 数据仓库 数据湖

《Django 5 By Example》读后感

codists

Python django

一触“伙伴+华为”体系,传媒行业点亮数智之光

脑极体

AI 传媒

喜讯!云起无垠荣膺信通院 2023 - 2024 年度 “铸链” 案例自主研发创新成果奖

云起无垠

苹果M4芯片玩游戏怎么样?全新MacBook Pro 适合打游戏吗?

阿拉灯神丁

crossover pd虚拟机 MacBook Pro 苹果mac游戏 macOS 14 Sonoma

解锁未来:深入探索去中心化应用程序(DApps)的潜力与挑战

chainwiseweb3

去中心化钱包 区块链技术开发 dapp开发 #Web3 DApps开发

鸿蒙 NEXT 开发之后台任务开发服务框架学习笔记

威哥爱编程

HarmonyOS HarmonyOS框架 HarmonyOS NEXT HarmonyOS5.0

【杂谈】服务端能同时处理多少个 Socket 连接?背后的资源与限制分析

不在线第一只蜗牛

网络 服务器

从体系建设到深化应用,中国管理会计实现十年跃迁(上)

用友智能财务

【YashanDB知识库】IMP跨网络导入慢问题

YashanDB

数据库 yashandb

提升海外SaaS访问效率的最佳方案

Ogcloud

网络加速 SD-WAN SD-WAN组网 海外网络加速 SD-WAN国际专线

1219| 清华AI助攻科研升职 | Anthropic揭示模型风险 | Genesis开源物理引擎 | 字节新视觉理解模型 | OpenAI功能革新 | 武汉大学成立AI学院 | 上海报业数字人上线

言寡意多

DNS DDoS攻击威胁加剧,国科云解析筑牢网络安全防线

国科云

苦熬3个月,阿里Java岗五面,成功上岸获offer!Java面试题库分享

程序员高级码农

Java 程序员 后端 java面试 Java面试题

微软对软件内存事务的试验已告终止_.NET_Jonathan Allen_InfoQ精选文章