sunny-cheng  
from threading import Thread,Lock
import time
n=100
def task():
global n
temp=n
time.sleep(0.1)
n=temp-1

if __name__ == '__main__':
t_l=[]
for i in range(100):
t=Thread(target=task)
t_l.append(t)
t.start()

for t in t_l :
t.join()

print('主',n)

运行结果的值:主 99
因为多线程共享地址空间,所以 产生的100个线程会执行100次,100-1 所以结果是99


from threading import Thread,Lock
import time
n=100
def task():
global n
mutex.acquire()
temp=n
time.sleep(0.1)
n=temp-1
mutex.release()


if __name__ == '__main__':
mutex=Lock()
t_l=[]
for i in range(100):
t=Thread(target=task)
t_l.append(t)
t.start()

for t in t_l :
t.join()

print('主',n)
运行结果的值:主 0
加互斥锁串行运行100-1 所以运行100次结果为0


posted on 2018-11-18 16:12  sunny-cheng  阅读(248)  评论(0编辑  收藏  举报