这次 CAS 换成功了吗

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

按 CAS 模型,当前 5、期望 4,cas(5, 4, 9)[0] 交回什么?

CAS 模型:cas(当前, 期望, 新值)——当前==期望才换、交回 (是否成功, 换后值);cas_ok 会不会成、apply_cas 只交回换后值、spins(看到的值序列, 期望)=期望出现前失败自旋几次。

def cas(cur, expected, new):
    """比较并交换:当前值 == 期望才换成新值;交回 (是否成功, 换后的当前值)。"""
    if cur == expected:
        return (True, new)
    return (False, cur)


def cas_ok(cur, expected):
    """这次 CAS 会不会成功。"""
    return cur == expected


def apply_cas(cur, expected, new):
    """只交回换后的当前值。"""
    return new if cur == expected else cur


def spins(seen, expected):
    """期望值出现前,CAS 失败自旋了几次(seen 是每次看到的当前值序列)。"""
    return next((i for i, v in enumerate(seen) if v == expected), len(seen))

print(cas(5, 4, 9)[0])
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论