线程间使用全局变量进行通信。
同步互斥:
首先分为同步和互斥两个部分;
同步:这一一种协作关系,为了完成默写任务,操作,多进程或者线程间形成的一种协调,万兆有序的步骤执行操作。
互斥:当全局变量被一个线程使用的时候,其他的线程不能对该数据进行操作,必须要等到资源被释放后才能拿来使用。
线程同步互斥方法:
内容 | 线程Event | 线程Lock |
---|---|---|
使用模块 | from threading improt Event | from threading import Lock |
创建对象 | e=Event() | lock=Lock() |
设置阻塞 | e.wait([timeout])阻塞等待 | lock.acquire()上锁 |
设置解除阻塞 | e.set()解除阻塞 | lock.release()解锁 |
使用方法 | e.clear()使e回到未被设置状态 | with lock:… with代码结束自动解锁 |
代码演示:
Event:
"""
event 线程互斥方法演示
"""
from threading import Thread,Event
s = None
e = Event()
def 杨子荣():
print("杨子荣前来拜山头")
global s
s = "天王盖地虎"
e.set()
t = Thread(target = 杨子荣)
t.start()
print("说对口令就是自己人")
e.wait() # 等待e被set
if s == '天王盖地虎':
print("宝塔镇河妖")
print("确认过眼神,你是对的人")
else:
print("打死他!")
t.join()
Lock:
"""
thread_lock.py
线程锁演示
"""
from threading import Thread,Lock
a = b = 0
lock = Lock()
def value():
while True:
lock.acquire() # 上锁
if a != b:
print("a = %d,b = %d"%(a,b))
lock.release() # 解锁
t = Thread(target = value)
t.start()
while True:
with lock: # 上锁
a += 1
b += 1
# 解锁
t.join()