线程锁
线程锁(也被叫做互斥锁)是一种同步机制,用于保护共享资源或临界区,以防止多个线程同时访问或修改数据。
实际上,线程锁锁住的是共享资源,而不是线程本身。
简单来说:一把扫帚一个人用完后,再交给另一个人使用
线程安全
如果多个线程都对一个全局变量进行操作的话会出现资源竞争的问题,会导致计算错误。
简单示例:
import threading
from threading import Thread, RLock
num = 0
rlock = RLock()
def add():
# global 将num变为全局变量
global num
for i in range(1000):
rlock.acquire() # 上锁
num += 1
rlock.release() # 解锁
def sub():
global num
for i in range(1000):
rlock.acquire() # 上锁
num -= 1
rlock.release() # 解锁
# 创建线程对象
# t1 = threading.Thread() 与 t1 = Thread()类似 , 但Thread缺少一些线程管理功能
t1 = Thread(target=add)
t2 = Thread(target=sub)
# 开启线程
t1.start()
t2.start()
print(num)
注意:
acquire() # 申请锁,申请成功会让其他线程等待直到当前线程释放
release() # 释放锁,当锁被释放后其他线程才能被cpu挂起执行
申请?申请!?申请!
不是你想上锁就上锁的,你想和别人的合法老婆申请领结婚证?
请你在他们离婚后再提交申请