临界资源: 多个进程或者线程都能够操作的共享资源
临界区: 操作临界资源的代码段
同步: 一种合作关系为完成某个任务, 多进程或者多线程之间形成一种协调, 按照约定或条件执行临界资源
异步: 进程之间彼此独立,在等待其他进程的运行时,本进程继续做自己的事,不需要等待其他进程完成后再工作。
互斥: 一种制约关系, 当一个进程或者线程使用临界资源时进行上锁处理, 当另一个进程或者线程对使用时会阻塞等待, 直到解锁后才能继续使用
同步互斥方法
1. Event 事件
__multiprocessing/Event
创建事件对象
e = Event()
设置事件阻塞
e.wait([timeout])
事件设置, 当事件被设置后e.wait()不再阻塞
e.set()
清除设置, 当事件被清除后e.wait()再次阻塞
e.clear()
事件状态判断
e.is_set()
- e在父进程中被set()或clear(), 所有进程中的e状态同时改变
2. Lock 锁
创建对象
lock = Lock()
上锁, 如果锁已经是上锁状态, 调用此函数会阻塞
lock.acquire()
释放锁
lock.release()
另一种上锁
with lock: