09_解决进程间通信线程间通信的资源竞争-同步互斥机制

09_解决进程间通信线程间通信的资源竞争-同步互斥机制[Python常见问题]

1.同步和互斥

    1.目的: 对共有资源的操作会产生争夺,同步互斥是一种解决争夺的方案

    2.临界资源: 多个进程或线程都可以操作的资源

    3.临界区: 操作临界资源的代码段

    4.同步:
        同步是一种合作关系,为完成某个任务多进程或多线程之间形成一种协调,按照条件依次执行传递告知资源情况,这种协调可能是因为阻塞关系达成的

        同步就是协同步调,按预定的先后次序进行运行,如:消息队列通信

        进程(线程)同步可理解为进程(线程)A和B一块配合,A执行到一定程度时要依靠B的某个结果于是停下来示意B运行;B执行再将结果给A;A再继续操作

    5.互斥:

        互斥是一种制约关系,一个进程(线程)进入到临界区会进行加锁操作,其它进程(线程)在企图操作临界资源就会阻塞,只有当资源被释放才能进行操作

        当多个线程同时修改共享数据的时候,需要进行同步控制,使用互斥锁则保证了每次只有一个线程进行写入操作,保证了多线程情况下数据的正确性

        某个线程要更改共享数据时,先将其锁定此时资源即上锁,其他线程不能更改;直到该线程释放资源即解锁,其他的线程才能再次锁定该资源

2.进程事件-Event

    1.进程事件概述: 一个进程通过对Event的事件状态的设置,另外一个进程判断事件状态来确认是阻塞等待还是继续执行

    2.语法概述

from multiprocessing import Event

e = Event()  # 创建事件对象
e.wait()  # 提供事件阻塞
e.set()  # 对事件对象进程设置,此时wait判断如果事件被set则结束阻塞
e.clear()  # 清除该事件对象的set
e.is_set()  # 监测对象是否被设置,设置返回True
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 09_解决进程间通信线程间通信的资源竞争-同步互斥机制