Orien Daily

无锁编程里的幽灵:ABA 问题
假设你在写一个无锁栈,核心逻辑简单到让人心安:读栈顶指针 A,新建节点指向 A,用 CAS 把栈顶从 A 换成新节点。看起来天衣无缝——CAS 会帮你检查"栈顶还是不是 A",不是就重试,完美。但线程 1 刚读完 A 被挂起的那一小段窗口里,线程 2 可以弹出 A、弹出 A 的下一个,又把 A 重新压回去。栈顶值没变,还是 A,CAS 成功——可栈里面的数据关系已经全变了。你拿着一个"看起来没改"的指针,接上了一段早就被拆散的链表。这就是 ABA,无锁编程里最阴险的问题:CAS 只比较值,不比较"这个值是不是同一次出现"。
解决办法的核心思路都是让 CAS 能区分"同一个地址的两次不同出现"。最经典的是加版本号——Hazptr 论文里是用一个带 epoch 计数的指针包装,每次修改都递增版本,这样哪怕地址回到 A,版本号也变了,CAS 自然失败。Linux 内核里用的atomic64_t做 64 位 CAS 也就是这个思路:低 32 位放指针,高位放计数器,一次操作同时比较两者。另一个思路是 Hazard Pointer——线程在访问节点前先"挂号"声明自己正在用这个节点,回收器看到有人挂号就推迟释放,从根源上杜绝了"正好被重新分配回来"的可能。
ABA 的教训不只是并发技巧,它揭示了一个更本质的东西:相等 ≠ 同一。CAS 比较的是比特模式,不是对象身份,而并发场景下这两者经常不是一回事。 这就是为什么 64 位原子操作在内核里不是奢侈品而是刚需。
📸 @thejypnews #YEJI ×4
.@ITZYofficial drops "Motto" M/V photos for YEJI.
Error 500 (Server Error)!!1500.That’s an error.There was an error. Please try again later.That’s all we know. #ITZY #있지 #YEJI #예지
原文 #黄礼志
📸 @Sakanavmn3 #加藤小夏
きたぁぁぁぁぁぁぁ!!!!
https://youtu.be/eEkvyvjjzds?si=T1ZCcosvTnMJzM8M
きたぁぁぁぁぁぁぁ!! ! !
https://youtu.be/eEkvyvjjzds?si=T1ZCcosvTnMJzM8M #加藤小夏 #山口一郎
原文 #加藤小夏
🌅 Orien Daily 朝刊【5.18】
1️⃣ Mozilla力挺VPN为隐私必需 — 向英国监管施压
2️⃣ Zerostack:Rust编码代理 — Unix理念AI工具
3️⃣ AI不会加速流程 — HN热帖316评
4️⃣ Siri改版或自动删对话 — 隐私成核心
5️⃣ OpenAI开源Symphony — Issue驱动多代理
6️⃣ Ubuntu押注本地AI — 拒云端重控制
7️⃣ Musk诉Altman互攻信用 — 陪审团择立场
8️⃣ CAR-T或治自免疫病 — 癌症疗法新突破
频道:@OrienDaily
📸 @ITZYofficial #YEJI ×4
ITZY “Motto” M/V PHOTO
💿 ALBUM RELEASE
2026.05.18 MON 6PM (KST) | 5AM (ET)
http://ITZY.lnk.to/Motto
@ITZYofficial
ITZY“座右铭”M/V 照片
💿 专辑发布
2026.05.18 周一 下午 6 点(韩国时间) |上午 5 点(东部时间)
http://ITZY.lnk.to/座右铭
@ITZY官方 #YEJI #예지 #ITZY #MIDZY #ITZYComeback #ITZY_Motto
原文 #黄礼志

📸 @dramaism_mbs #加藤小夏 ×2
✼••┈ 『 』 ┈••✼
📸▲撮影日誌カルタ▼✍🏻
「れ」、を引いた さん📝
この日はレンズチェンジが多かったのか、
スタッフのことを句にしていました📷💭
⸜放送情報⸝
5月19日火曜最終話🌙
TVer第1~3,7話配信はこちらから🌷
▷https://tver.jp/episodes/epx7z02hx3
✼••┈ 『 』 ┈••✼
📸▲摄影日记花牌▼✍🏻
拉“re”的先生📝
这一天有很多镜头变化。
我正在写一个关于员工的短语📷💭
⸜播出信息⸝
5月19日星期二最后一集🌙
TVer第1~3,7集可以在这里观看🌷
▷https://tver.jp/episodes/epx7z02hx3 #失恋カルタ #加藤小夏 #ドラマイズム
原文 #加藤小夏