• Python_多线程与多进程编程


    线程同步技术
    使用线程同步技术有两个原因:

    数据安全问题,多个线程去取同一个数据源中的数据,如果不加同步锁会导致数据的脏读问题。
    协作顺序问题,多个线程完成同一个任务时,线程之间应该有同步和交互来协调各个线程。
    Python的threading模块提供了多种用于线程同步的对象,在后面会一一介绍。

    3.1 Lock/RLock对象
    Lock是比较低级的同步原语,当被锁定以后不属于特定的线程。一个锁有两种状态:locked 和 unlocked。

    如果锁处于unlocked状态,acquire()方法将其修改为locked并立即返回
    如果锁已处于locked状态,则阻塞当前线程并等待其他线程释放锁,然在获取到了锁后将其修改为locked并立即返回。
    release()方法用来将锁的状态由locked修改为unlocked并立即返回,如果锁状态本就是unlocked,调用该方法会抛出异常.
    可重入锁RLock对象也是一种常用的线程同步原语,可以被同一个线程acquire()多次。

    当处于locked状态时,某线程拥有该锁
    当处于unlocked状态时,该锁不属于任何线程。
    RLock对象的acquire()/release()调用时可以嵌套,仅当最后一个或最外层的release()执行结束,锁才会被设置为unlocked状态


    ————————————————
    版权声明:本文为CSDN博主「ChanZany」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_41819729/article/details/105489655

    你有什么心态,就有什么样的人生。管不好自己的心态,注定你就是个弱者。
  • 相关阅读:
    struts2简介
    项目整合SpringDataRedis
    SpringDataRedis入门Demo
    包管理-rpm
    文件查找与压缩
    N042第一周
    Shell
    Linux下终端字体颜色设置方法
    文本处理工具作业
    正则表达式
  • 原文地址:https://www.cnblogs.com/LQZ888/p/12705927.html
Copyright © 2020-2023  润新知