1、重要概念
竞争条件:特指一种场景:两个或多个条件读写某些共享数据,而最后的结果取决于进程运行的准确时序(时间顺序)。
临界区:多线程中,可以理解为如果被多个线程同时执行,会导致竞争条件的出现的代码片段(读写共享数据)。
原语:可以原子执行的命令,原语执行过程中不会被中断。用于限制同时进入临界区的线程数目,即在临界区使线程互斥。python提供的原语包括:Lock,RLock,Condition,Semaphore 等。
Lock:最简单的同步原语,不一定由获得lock的线程执行release操作。
RLock:可重入锁,哪个线程获得了锁,必须由哪个线程释放。
Condition:对Lock的扩展,增加了wait,notify,notifyall 等表达方式。
Semaphore:用于允许多个资源进入临界区的情况,具体允许多少临界区,取决于可用资源的数量。