锁¶
| 名称 | 描述 | 特性 | 缺点 |
|---|---|---|---|
| atomic | 原子锁 只能保护寄存长度的数据 |
一读/一写 | 保护数据长度有限 |
| spinlock | 自旋锁 循环检查,直到锁可用 |
一读/一写 | 线程间无优先级保证 |
| MSC lock | 基于自旋锁的扩展 通过维护加锁申请队列,锁按申请顺序分配 |
一读/一写 | |
| ticket locks | 排队自旋锁 等待加锁的线程按顺序获取锁 |
一读/一写 | |
| rwlock | 读写锁 多个读线程可以同时加锁 单写线程持加锁 |
多读或一写 | 如果读线程多,写线程可能一直等待 |
| seqlock | 序列锁 写线程可以在有读线程持锁时,直接加锁 读线程需要多次读,判断数据是否被更新 |
多读和一写 | |
| Phase-fair locks | 公平锁 基于读写锁修改,读写线程依次持锁,避免出现饥饿的情况 |
读写交替 | |
| RCU,read copy update |