成功 5 次后是多少

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

按无锁模型,从 0 起、成功自增 5 次,total_after(0, 5) 交回几?

无锁模型:try_incr(当前, 看到的值)——没被别人改过(当前==看到)才 +1,交回 (成否, 值);total_after(起点, 成功数)、push_ok(栈顶, 看到)、retries_needed(每次成否)=第一次成功前重试几次。

def try_incr(cur, seen):
    """一次无锁自增尝试:看到的值 seen 和当前 cur 一样(没被别人改过)才 +1 成功。"""
    if cur == seen:
        return (True, cur + 1)
    return (False, cur)


def total_after(start, successes):
    """成功 successes 次自增后的值。"""
    return start + successes


def push_ok(top, seen):
    """无锁栈 push:栈顶没变(== seen)才接得上去。"""
    return top == seen


def retries_needed(attempts):
    """attempts 是每次尝试成不成的列表;到第一次成功前重试了几次。"""
    return next((i for i, ok in enumerate(attempts) if ok), len(attempts))

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

                        
👩‍🏫
AI
💬 题目评论

全部评论