美文网首页
python Lock对象,对临界区加锁

python Lock对象,对临界区加锁

作者: 孙广宁 | 来源:发表于2022-06-02 23:41 被阅读0次
    12.4 如果我们的程序用到了多线程,我们相对临界区进行加锁处理,避免竞态条件的出现
    • 可以利用threading模块的Lock对象来处理
    import threading
    class ShareCounter:
        def __init__(self,initial_value=0):
            self._value=initial_value
            self._value_lock = threading.Lock()
        def incr(self,delta=1):
            with self._value_lock:
                self._value +=delta
        def decr(self,delta=1):
            with self._value_lock:
                self._value -=delta
    
    • 当使用with语句是,Lock对象可确保产生互斥的行为,也就是说,同一时间只允许一个线程执行with语句中的代码块,with语句会在执行缩进的代码块时获取到锁,当控制流离开缩进的语句块时释放这个锁
    • 尽量使用with语句去调用锁Lock,以防代码忘记调用release方法来释放Lock

    相关文章

      网友评论

          本文标题:python Lock对象,对临界区加锁

          本文链接:https://www.haomeiwen.com/subject/bjscmrtx.html