Python 线程锁(让初学者简单易懂)

线程锁

线程锁(也被叫做互斥锁)是一种同步机制,用于保护共享资源或临界区,以防止多个线程同时访问或修改数据。

实际上,线程锁锁住的是共享资源,而不是线程本身。

简单来说:一把扫帚一个人用完后,再交给另一个人使用

线程安全

如果多个线程都对一个全局变量进行操作的话会出现资源竞争的问题,会导致计算错误。

简单示例:

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挂起执行

申请?申请!?申请!

不是你想上锁就上锁的,你想和别人的合法老婆申请领结婚证?

请你在他们离婚后再提交申请 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值