# 锁通常被用来实现对共享资源的[同步]访问。
# 为每一个共享资源创建一个Lock对象,
# 当你需要访问该资源时,调用acquire方法来获取锁对象(如果其它线程已经获得了该锁,则当前线程需等待其被释放),
# 待资源访问完后,再调用release方法释放锁:
import time
import threading
def addNum():
global num #在每个线程中都获取这个全局变量
#num-=1
# 获得锁锁定
lock.acquire()
temp=num
time.sleep(0.001)
num =temp-1 # 对此公共变量进行-1操作
lock.release()
# 释放锁,让别的线程继续用
num = 100 #设定一个共享变量
thread_list = []
# 增加线程同步锁
lock = threading.Lock()
for i in range(100):
t = threading.Thread(target=addNum)
t.start()
thread_list.append(t)
for t in thread_list: #等待所有线程执行完毕
t.join()
print('Result: ', num)