python 同步锁

##加锁之前
import threading
import time
def sub():
    global num
    temp=num
    time.sleep(0.0001)
    num=temp-1
num=100
l=[]
for i in range(100):
    t=threading.Thread(target=sub)
    t.start()
    l.append(t)
for t in l:
    t.join()
print(num)

#执行结果:  大于0,为98之类的

#加同步锁之后
import threading
import time
def sub():
    global num
    lock.acquire()
    temp=num
    time.sleep(0.0001)
    num=temp-1
    lock.release()
l=[]
lock=threading.Lock()
num=100
l=[]
for i in range(100):
    t=threading.Thread(target=sub)
    t.start()
    l.append(t)
for t in l:
    t.join()
print(num)
#执行结果为0:正常

 

你可能感兴趣的:(操作系统,编程,python)