黑马程序员技术交流社区

标题: 【广州python】互斥锁完成2线程对全局变量的操作失败Runtim [打印本页]

作者: 唐伯虎(0)    时间: 2018-10-25 14:57
标题: 【广州python】互斥锁完成2线程对全局变量的操作失败Runtim
本帖最后由 唐伯虎(0) 于 2018-10-25 17:36 编辑

错误代码截图:

                 

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








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2