Fork me on GitHub

day 30

day 30

GIL全局解释器锁:
    基于Cpython来研究全局解释器锁.
    
    1.GIL本质上是一个互斥锁.
    2.GIL的为了阻止同一个进程内多个线程同时执行(并行)
        - 单个进程下的多个线程无法实现并行,但能实现并发
    
    3.这把锁主要是因为CPython的内存管理不是 "线程安全" 的.
        - 内存管理
            - 垃圾回收机制
            
    GIL的存在就是为了保证线程安全的.
    
    注意: 多个线程过来执行,一旦遇到IO操作,就会立马释放GIL解释器锁,交给下一个先进来的线程.
    
在计算密集型的情况下:
    使用多进程
    
在IO密集型的情况下:
    使用多线程
    
高效执行多个进程,内多个IO密集型的程序:
    使用 多进程 + 多线程
    
递归锁(了解):
    用于解决死锁问题.

RLock: 比喻成万能钥匙,可以提供给多个人去使用.
    但是第一个使用的时候,会对该锁做一个引用计数.
    只有引用计数为0, 才能真正释放让另一个人去使用
    
信号量(了解):

    互斥锁: 比喻成一个家用马桶.
        同一时间只能让一个人去使用

    信号量: 比喻成公厕多个马桶.
        同一时间可以让多个人去使用
        
线程Q(了解级别1): 线程队列  面试会问: FIFO

    - FIFO队列: 先进先出
    - LIFO队列: 后进先出
    - 优先级队列: 根据参数内,数字的大小进行分级,数字值越小,优先级越高
    
1.首先根据第一个参数判断ascii表的数值大小
2.判断第个参数中的汉字顺序.
3.再判断第二参数中数字--> 字符串数字 ---> 中文
4.以此类推
posted @ 2019-10-27 20:34  Yugaliii  阅读(89)  评论(0)    收藏  举报