补全:自己写一个 Guard

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

(每道题开头都有同一段:上面那几样。)

贯穿全条的几样东西:

Counter / SafeCounter   读-睡-写的计数器;Safe 版用 with self.lock 包住三步(conc_03 的写法)
hammer(counter, workers, times)   开几条线程各加 times 次,交回最终的 n(真线程,题里只比大小)
probe(lock)   这把锁现在能不能立刻拿到(acquire(blocking=False),拿到就放回)——用它「看」锁的状态,不卡住
Guard(lock)   手写的 with 替身:__enter__ 拿、__exit__ 放

补全 Timed:像 Guard 一样是个上下文管理器,进块拿锁、出块放锁,另外记下这次持锁多少秒到 self.held(出块时算)。看两次 with 之后锁放开、held 大于等于睡的时长。

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

                        
👩‍🏫
AI
💬 题目评论

全部评论