进程-同步互斥机制

本文介绍了同步互斥机制,旨在解决多进程对共有资源的争夺问题。同步是进程间的一种协调合作,通过事件(Event)和锁(Lock)实现资源的有序访问。事件用于阻塞与解除阻塞,而锁确保了临界区的互斥访问。
摘要由CSDN通过智能技术生成

【同步互斥】

1.同步互斥机制

  1. 目的:
    解决对共有资源操作产生的争夺

  2. 临界资源:
    多个进程或线程都能够操作的资源(例如终端)

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

  4. 同步:
    同步是一种合作关系,为完成某个任务多进程和多线程之间形成一种协调,
    按照约定或条件依次执行操作临界资源,相互告知资源使用情况。
    (这种协调可能是因为阻塞关系达成的)

  5. 互斥:
    互斥是一种制约关系,当一个进程或者线程进入临界区会进行加锁的操作。
    此时其他进程(线程)再企图使用临界资源时就会阻塞,直到资源被释放才能使用。

2.同步互斥方法:

  • Event 事件:
    from multiprocessing import Event
  1. 创建事件对象:
    e = Event()
  2. 事件阻塞:
    e = wait([timeout])
  3. 事件设置:
    e.set()
    对事件对象进行设置,此时wait判断如果事件被set则结束阻塞
    e处于设置状态,e.wait()不在阻塞
  4. 事件清除:
    e.clear()
    e处于未设置状态,e.wait()阻塞
  5. 事件判断:
    e.is_set()
    判断e的当前状态.检测对象是否被设置,设置返回True,事件阻塞为False

示例1:

# event_test.py  
from multiprocessing import Event  
  
# 创建事件对象  
e = Event()  
print(e.is_set())  
e.set()  
# 将设置清除 wait又堵塞  
e.clear()  
e.wait()  
print(e.is_set())  

示例2:

from multiprocessing import Process,Event
from time import sleep

def wait_event()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值