软件事务内存Skill software-transactional-memory

软件事务内存(STM)是一种并发编程技术,通过将读写操作组合成原子事务来简化无锁算法的设计,确保数据一致性,适用于并发数据结构构建和原子操作组合。关键词:软件事务内存、并发编程、无锁代码、原子操作、数据一致性、事务处理。

后端开发 0 次安装 0 次浏览 更新于 3/13/2026

名称: 软件事务内存 描述: ‘实现软件事务内存。使用场景:(1) 构建并发数据结构,(2) 简化无锁代码,(3) 组合原子操作。’ 版本: 1.0.0 标签:

  • 并发
  • stm
  • 事务
  • 同步 难度: 中级 语言:
  • haskell
  • rust 依赖项: []

软件事务内存

实现STM用于无锁并发编程。

使用场景

  • 并发数据结构设计
  • 简化无锁算法
  • 组合原子操作
  • 内存中的数据库风格事务

此技能的作用

  1. 实现事务 - 原子读写块
  2. 处理冲突 - 冲突检测和重试
  3. 提供可组合性 - 事务组合
  4. 优化性能 - 读/写集

关键概念

概念 描述
读集 事务中读取的变量
写集 事务中写入的变量
提交 验证和应用写入
中止 丢弃更改,重新开始
重试 等待条件,重新开始
或否则 中止时的替代方案

STM属性

  • 原子性: 全有或全无
  • 隔离性: 无中间状态可见
  • 一致性: 保持不变量
  • 可组合性: 组合操作

提示

  • 保持事务简短
  • 避免长时间运行的操作
  • 使用重试进行阻塞
  • 考虑竞争模式
  • 分析中止率

相关技能

  • actor-model-implementer - 参与者并发
  • race-detection-tool - 竞争检测
  • weak-memory-model-verifier - 验证并发

研究工具与工件

STM实现:

系统 语言 学习要点
Haskell STM Haskell 可组合事务
Clojure refs Clojure 生产STM
Intel TSX C/C++ 硬件支持
TinySTM C 快速STM

关键论文

  • Shavit & Touitou (1997) - 原始软件事务内存论文
  • Herlihy & Moss (1993) - 硬件事务内存
  • Harris, Marlow, Peyton Jones, Herlihy (2005) - “Composable Memory Transactions” (PPoPP 2005)

研究前沿

1. 硬件事务内存

  • 目标: 硬件对事务的支持
  • 方法: TSX, HTM
  • 工具: Intel TSX

实现陷阱

陷阱 实际后果 解决方案
饥饿 事务永不提交 有界重试
竞争 高中止率 仔细设计