python2.7 threading 模块 二 Lock RLock

本文介绍了Python2.7中的线程锁机制,包括Lock和RLock的使用。Lock是基础锁,当锁被占用时,acquire()会阻塞,而RLock是可重入锁,允许同一线程多次获取锁,防止递归调用时的死锁问题。文中给出了简单的示例代码来说明它们的工作原理。
摘要由CSDN通过智能技术生成

1.Lock

Lock的概念很简单,就不多解释了

锁有两种状态:被锁(locked)和没有被锁(unlocked)。拥有acquire()和release()两种方法,并且遵循一下的规则:

  • 如果一个锁的状态是unlocked,调用acquire()方法改变它的状态为locked
  • 如果一个锁的状态是locked,acquire()方法将会阻塞,直到另一个线程调用release()方法释放了锁;
  • 如果一个锁的状态是unlocked调用release()会抛出RuntimeError异常;
  • 如果一个锁的状态是locked,调用release()方法改变它的状态为unlocked。

API 所有的操作都是atomically.

  • Lock.acquire([blocking])
  • Lock.release()

    参数 blocking:

  • True(the default):一直阻塞直到锁被realse.

  • False:如果锁被占用,不阻塞立马返回false

ps:这是python2.7的Lock.acquire(), python3.x的Lock.acquire(blocking=True, timeout=-1)多了一个超时设置。

一个简单的小例子:

import threading
import time

class MyThread(threading.Thread):
    def run(self):
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值