"""
线程通信方法: 利用同步互斥机制(都是对共享资源的操作)
多个线程对共享资源的操作代码称为临界区
同步是一种协作关系,未完成操作,多进程或者线程之间形成一种协调,按照必要步骤有序执行操作
互斥是一种制约关系,当一个进程或者线程占有资源是会进行加锁处理,其他的线程无法操作该资源,直到解锁
Event:
1.创建event对象 e=Event()
2.阻塞等待对象被set e.wait([timeout])
3.设置对象,使wait结束阻塞 e.set()
4.使对象回到未被设置状态 e.clear()
5.查看对象是否被设置 e.is_set()
Lock:
1.创建锁对象 lock=Lock()
2.上锁 lock.acquire() 阻塞操作:再次调用到lock.acquire时是阻塞状态
3.解锁 lock.release()
with lock : 上锁
...
with代码块结束自动解锁
"""
from threading import Thread, Event
from threading import Lock
def event_():
num = None
e = Event()
def fun():
print("请问你是大刀王老五吗\n")
global num
num = 1
e.set()
t = Thread(target=fun)
t.start()
e.wait()
if num == 1:
print("原来你就是大刀王老五")
else:
print("你不是王老五,你到底是谁?")
t.join()
def lock_():
a = b = 1
lock = Lock()
def val():
while True:
lock.acquire()
if a != b:
print("a=%d,b=%d" % (a, b))
else:
print("a=b")
lock.release()
t = Thread(target=val)
t.start()
while True:
with lock:
a += 1
b += 1
lock_()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75