简介

并发数据结构 Concurrent data structures, CDS 有三个关键的主题:

  • 安全 Safety, 满足多线程并发的规范
    • 顺序规则 sequential specification, 像一个队列一样按顺序操作
    • 同步 synchronization
  • 可扩展性 Scalability, 随着处理器核心数的增多, 性能更好
    • 理想情况下, 线性递增
    • 实际情况, 超过 16 个线程之后, 会退化成次线性递增 (sublinear scaling)
  • 有进度 Progress, 保证操作过程向前推进
    • lock freedom: 至少有一个进度向前推进
    • wait freedom: 所有的进度都向前推进

安全性 Safety

使用锁或者其它同步原语 (primitive synchronization) 来保护并发数据结构.

  • 使用全局锁来保护顺序数据结构
  • 使用自定义的同步协议来保护数据结构

可扩展性 Scalability

  • 减少锁保护的作用域
    • 读写锁 read-write locking
    • hand-over-hand locking
    • lock coupling
  • 避免写数据以便减少无效的缓存
    • 乐观锁