美文网首页
python实现自动加解锁

python实现自动加解锁

作者: 还少一双小脚丫 | 来源:发表于2018-11-07 11:27 被阅读0次

    在多线程中锁的重要性众所周知,死锁的情况也经常出现,特别是在线程崩溃的时候,如果已经加锁,其他的线程会因为永远无法获取到锁而等待下去。
    如果所有的操作都是手动的lock,unlock,势必会造成操作的麻烦,自动加解锁应运而生
    在C++中可以利用类的构造函数和析构函数进行自动加解锁,那么在python中如何实现?
    答案是利用with,with可以保证在异常的情况下依然可以执行退出操作

    实现代码如下

    class AutoLock:
        def __init__(self):
            self._lock = Lock()
        def __enter__(self):
            print('lock')
            self._lock.acquire()
        def __exit__(self, exc_type, exc_val, exc_tb):
            print('unlock')
            self._lock.release()
    

    测试代码

        auto = AutoLock()
        with auto:
            raise ('123')
    

    执行结果

    image.png

    其他类型锁的实现类似

    相关文章

      网友评论

          本文标题:python实现自动加解锁

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