这算发生 ABA 了吗

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

按 ABA 模型,起 A、中 A、末 A(中途没变过),aba_happened("A", "A", "A") 交回什么?

ABA 模型:aba_happened(起, 中, 末)——变过又回到起点;cas_value(当前, 期望) 只比值(识别不出 ABA);cas_tagged(当前, 版本, 期望, 期望版本) 值和版本都对才成;fooled=只比值会不会被 ABA 骗。

def aba_happened(v_start, v_mid, v_end):
    """A->B->A:中途变过、又回到起点——只看值会以为「没变过」。"""
    return v_start == v_end and v_mid != v_start


def cas_value(cur, expected):
    """只比值的 CAS:当前 == 期望就成功(识别不出 ABA)。"""
    return cur == expected


def cas_tagged(cur, tag, expected, exp_tag):
    """带版本号的 CAS:值和版本都对上才成功。"""
    return cur == expected and tag == exp_tag


def fooled(v_start, v_mid, v_end):
    """只比值的 CAS 会不会被 ABA 骗(本该拦、却放过)。"""
    return aba_happened(v_start, v_mid, v_end)

print(aba_happened("A", "A", "A"))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论