无锁最坏丢了几次

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

按模型,4 个线程各加 1 次,lost(4, 1) 交回几?

贯穿本节的并发模型(判题机 0.25 核有 GIL、答案不靠时序,这是它的确定模型,见 spine.py):高并发服务器搭起来后要选架构、加锁护状态、连接池/队列、压测、测吞吐延迟、定位竞争。

共享状态:threads 个线程各自增 per 次。加锁 safe_total=threads*per 一次不丢;无锁最坏 racy_total=per(读改写彼此覆盖、只剩一个活下来),lost=丢掉的更新数。

def safe_total(threads, per):
    """加锁:threads 个线程各自增 per 次,一次不丢。"""
    return threads * per


def racy_total(per):
    """无锁最坏情况:读改写彼此覆盖,最后只剩一个线程的 per 次加成活下来。"""
    return per


def lost(threads, per):
    """无锁最坏丢了多少次更新。"""
    return safe_total(threads, per) - racy_total(per)

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

                        
👩‍🏫
AI
💬 题目评论

全部评论