并发自增丢了后剩多少

场景:~/vis/丢更新.py 多个线程用「读-睡-写」不加锁地自增同一个计数器。 任务:跑它、看最终计数(比期望小),到 ~/对照表.txt 里查它对应的标记。 (判分只看你在受控容器里做出的证据,纯本机、纯 Python,不碰公网。)

开始练习 →

这程序开了几个线程

场景:~/vis/丢更新.py 起了若干个自增线程。 任务:数它一共起了几个工作线程,到 ~/对照表.txt 里查它对应的标记。 (判分只看你在受控容器里做出的证据,纯本机、纯 Python,不碰公网。) (本机受控环境:0.25 核、有

开始练习 →

加 join 让主线程等一等

场景:~/vis/待修-join.py 主线程没等工作线程就读、拿到旧值。 任务:给工作线程加上 join(),让主线程等它写完再读,读到正确值。改好运行 ~/check。 (判分只看你在受控容器里做出的证据,纯本机、纯 Python,不碰

开始练习 →

用事件把写发布出去

场景:~/vis/待修-event.py 主线程轮不到工作线程写完的值。 任务:用一个事件(Event):工作线程写完置位、主线程等它置位再读。改好运行 ~/check。 (判分只看你在受控容器里做出的证据,纯本机、纯 Python,不碰公

开始练习 →

加锁让自增不丢

场景:~/vis/待修-lock.py 多线程「读-睡-写」自增,丢更新。 任务:用一把锁把「读-改-写」保护成一步,让最终计数等于期望。改好运行 ~/check。 (判分只看你在受控容器里做出的证据,纯本机、纯 Python,不碰公网。)

开始练习 →

交付:把同步补齐

场景:~/vis/待修-交付.py 既读到旧值、又丢更新——同步全缺。 任务:把该等的等(join/事件)、该锁的锁补齐,让它多次跑都读到正确值、且计数不丢。改好运行 ~/check。 (判分只看你在受控容器里做出的证据,纯本机、纯 Pyt

开始练习 →

高并发常见几种架构

同样多连接,占的开销差很远 左边一摞、右边一小块 撑高并发的服务器,常见架构大致是【0】。 贯穿本节的并发模型(判题机 0.25 核有 GIL、答案不靠时序,这是它的确定模型,见 spine.py):高并发服务器搭起来后要选架构、加锁护状态

开始练习 →

每连接一线程的毛病

同样多连接,占的开销差很远 左边一摞、右边一小块 「每连接开一个线程」这种架构,连接一多就【0】。 贯穿本节的并发模型(判题机 0.25 核有 GIL、答案不靠时序,这是它的确定模型,见 spine.py):高并发服务器搭起来后要选架构、加

开始练习 →

异步单循环怎么撑并发

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

开始练习 →

常见架构有几种

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

开始练习 →