前言
线程锁
线程锁真的好麻烦啊!!!
- 什么是线程锁
多线程可以同时运行多个任务
但是当多个线程同时访问共享数据时,可能导致数据不同步,甚至错误!
so,不使用线程锁, 可能导致错误
啰嗦两句: 比如你在银行取钱的同时你女朋友用支付宝取钱 不同线程同时访问同一资源 如果资源不加锁可能会导致银行亏本 卡里有100却取出200这种错误
- 应用场景
I/O密集型操作 需要资源保持同步
3.用法
#锁的使用
#创建锁
lock = threading.Lock()
#锁定
lock.acquire([timeout])
#释放
lock.release()1234567
example
import threading
import time
counter = 0
counter_lock = threading.Lock() #只是定义一个锁,并不是给资源加锁,你可以定义多个锁,像下两行代码,当你需要占用这个资源时,任何一个锁都可以锁这个资源
counter_lock2 = threading.Lock()
counter_lock3 = threading.Lock()
#可以使用上边三个锁的任何一个来锁定资源
class MyThread(threading.Thread):#使用类定义thread,继承threading.Thread
def init(self,name):
threading.Thread.init(self)
self.name = “Thread-” &#