同步互斥
线程间通信方法
1.通信方法:线程间使用全局变量进行通信
2.共享资源争夺
- 共享资源:多个进程或者线程都可以操作的资源称为共享资源。对共享资源的操作代码段称为临界区。
- 影响 : 对共享资源的无序操作可能会带来数据的混乱,或者操作错误。此时往往需要同步互斥机制协调操作顺序。
3.同步互斥机制
同步 : 同步是一种协作关系,为完成操作,多进程或者线程间形成一种协调,按照必要的步骤有序执行操作。
互斥 : 互斥是一种制约关系,当一个进程或者线程占有资源时会进行加锁处理,此时其他进程线程就无法操作该资源,直到解锁后才能操作。
线程同步互斥方法
线程Event
from threading import Event
e = Event() 创建线程event对象
e.wait([timeout]) 阻塞等待e被set
e.set() 设置e,使wait结束阻塞
e.clear() 使e回到未被设置状态
e.is_set() 查看当前e是否被设置
1 from threading import Thread,Event 2 3 s = None # 用于通信 4 e = Event() # 创建event对象 5 6 def 杨子荣(): 7 print("杨子荣前来拜山头") 8 global s 9 s = "天王盖地虎" 10 e.set() # 对e设置 11 12 t = Thread(target=杨子荣) 13 t.start() 14 15 print("说对口令就是自己人") 16 e.wait() # 阻塞等待口令说出 17 if s == '天王盖地虎': 18 print("宝塔镇河妖") 19 print("确认过眼神,你是对的人") 20 else: 21 print("打死他...") 22 23 t.join() 24 25 # 说对口令就是自己人 26 # 杨子荣前来拜山头 27 # 宝塔镇河妖 28 # 确认过眼神,你是对的人