A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 唐伯虎(0) 于 2018-10-25 17:36 编辑

错误代码截图:

                 

解决方案:
        互斥锁总是处于”locked”或者“unlocked”两种状态之一,初始默认为“unlocked”状态。它有两个基本方法:acquire() 和 release()。在“unlocked”状态下调用 acquire(),互斥锁会进入“locked”状态并立即返回一个“True”;但如果是在“locked”状态下尝试调用 acquire(),调用者的线程会阻塞,直到该互斥锁被其他线程释放,然后阻塞的 acquire() 立即将锁转换到“locked”状态并返回值。 release() 方法不能在“unlocked”状态下调用,否则会引发如上图的RuntimeError 异常。
        错误代码中红色圈中的上锁的代码位置放错,导致上锁只一次,而第一次for循环解锁后跳到下次循环再解锁,而此时锁的状态为“unlocked”,所以会报错,正确代码应为:



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马