1. 管理器负责与公共进程通信
2. 代理负责操作共享的空间
Manger对象的基本使用
一般常用的空间类型是:
1. mgr.list()
2. mgr.dict()
3. mgr.Queue()
线程间共享的全局变量与同步锁
你会发现print输出的 a = 2,为什么上一篇的输出不是这样呢?
因为线程属于同一个进程,因此它们之间共享内存区域。因此全局变量是公共的。
进程a:线程a1,线程a2
进程b:线程b1,线程b2
隔着进程,线程通信一样Manager,属于进程通信。
互斥锁:控制共享资源的访问
# 指定加减次数
>>> n = 1000000 # 线程锁
>>> lock = Lock()
# 加
>>> def incr(n):
# 申明全局变量
>>> global a
# 对全局变量 a 做 n 次加 1
>>> for i in range(n):
# 上锁
>>> lock.acquire()
# 解锁
>>> lock.release()
互斥锁和死锁:
互斥锁是指锁住一个线程或进程执行,执行完后再执行下一个。
死锁是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。