在执行某些线程操作时,需要锁定相关资源  只允许当前线程对这些资源进行操作

以下程序目标是将num 从100每次减1减到0,当不加锁时输出为99,加锁后输出为0

import time,threading
r = threading.Lock()    #定义锁

def addNum():
    global num
    r.acquire()    #加锁
    tmp = num
    time.sleep(0.000001)
    num=tmp-1
    r.release()    #释放锁

num = 100
thread_list = []

for i in range(100):
    t = threading.Thread(target=addNum)
    t.start()
    thread_list.append(t)

for t in thread_list:
    t.join()

print('final num', num)

 

posted on 2021-12-16 22:07  csy113  阅读(30)  评论(0编辑  收藏  举报