同步锁作用: 在我当前包含(lock.acquire() 和 lock.release()之间 )的代码没有执行完成,不进行线程切换,必须等我执行完了,下一个线程才能继续执行(为什么要用同步锁,假如我们同时在操作一个数据的时候,比如数字100,10个线程同时操作他减1的时候,每个线程减10次,我们想要拿到结果为0,这时候没锁的情况下;得到的结果会不准确)

#-*-conding:utf-8-*-

import threading
import time

lock = threading.Lock() #创建同步锁对象
n = 100
def add():
global n
lock.acquire() #加上锁
temp = n
time.sleep(0.01)
n = temp - 1
lock.release() #释放锁

l = []
for i in range(100):
t = threading.Thread(target=add)
t.start()
l.append(t)

for r in l:
r.join()
print(n)

相关文章:

  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
  • 2021-10-11
  • 2021-05-19
  • 2021-09-11
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-22
  • 2018-12-13
  • 2021-05-04
  • 2022-01-18
  • 2022-12-23
相关资源
相似解决方案