两个函数几把锁
add 和 sub 都改同一个计数器 n。它们应该【0】。
锁住之后每次都对
(每道题开头都有同一段:上面那几样。) 贯穿全条的几样东西: Counter / SafeCounter 读-睡-写的计数器;Safe 版用 with self.lock 包住三步(conc_03 的写法) hammer(counter
补全:给计数器加锁
(每道题开头都有同一段:上面那几样。) 贯穿全条的几样东西: Counter / SafeCounter 读-睡-写的计数器;Safe 版用 with self.lock 包住三步(conc_03 的写法) hammer(counter
补全:手写拿放
(每道题开头都有同一段:上面那几样。) 贯穿全条的几样东西: Counter / SafeCounter 读-睡-写的计数器;Safe 版用 with self.lock 包住三步(conc_03 的写法) hammer(counter
补全:加和减共用一把锁
(每道题开头都有同一段:上面那几样。) 贯穿全条的几样东西: Counter / SafeCounter 读-睡-写的计数器;Safe 版用 with self.lock 包住三步(conc_03 的写法) hammer(counter
with 等于什么
with lock: 这一行等价于【0】。
范围该多大
with 块里该放的代码是【0】。
谁拿谁放
线程甲 acquire 了锁,线程乙调用 release。这【0】。
放锁放在哪一行
手写 acquire/release 时,release 应该放在【0】。
看锁在块前中后的状态
(每道题开头都有同一段:上面那几样。) 贯穿全条的几样东西: Counter / SafeCounter 读-睡-写的计数器;Safe 版用 with self.lock 包住三步(conc_03 的写法) hammer(counter