线程为什么要有锁:

  += 、-= 赋值操作数据不安全(要经过取值、计算、放回值,3部操作)

  pop 、append 都是数据安全的(只有添加和删除,一次操作)

  队列也是数据安全的

1、同步锁

import os, time
from threading import Thread

def work():
    global n
    temp = n
    time.sleep(0.1)
    n = temp - 1

if __name__ == '__main__':
    n = 100
    l = []
    for i in range(100):
        p = Thread(target=work)
        p.start()
        l.append(p)
    for p in l:
        p.join()
    print(n)    # 结果可能为99
多个线程抢占资源的情况

相关文章: