进程的同步互斥

临界资源: 多个进程或者线程都能够操作的共享资源
临界区: 操作临界资源的代码段

同步: 一种合作关系为完成某个任务, 多进程或者多线程之间形成一种协调, 按照约定或条件执行临界资源
异步: 进程之间彼此独立,在等待其他进程的运行时,本进程继续做自己的事,不需要等待其他进程完成后再工作。
互斥: 一种制约关系, 当一个进程或者线程使用临界资源时进行上锁处理, 当另一个进程或者线程对使用时会阻塞等待, 直到解锁后才能继续使用

同步互斥方法

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:

猜你喜欢

转载自www.cnblogs.com/ravener/p/9642726.html