两情侣之间容易形成什么锁?进来瞧瞧

文章目录

互斥锁

进程之间数据隔离,但是共享一套文件系统,因而可以通过文件来实现进程直接的通信,但问题是必须自己加锁处理。
注意:加锁的目的是为了保证多个进程修改同一块数据时,同一时间只能有一个修改,即串行的修改,没错,速度是慢了,牺牲了速度而保证了数据安全
那么也就是说当多个线程几乎同时修改一个共享数据的时候,需要进行同步控制,线程同步能够保证多个 线程安全的访问竞争资源(全局内容),最简单的同步机制就是使用互斥锁。 某个线程要更改共享数据时,先将其锁定,此时资源的状态为锁定状态,其他线程就能更 改,直到该线程将资源状态改为非锁定状态,也就是释放资源,其他的线程才能再次锁定资 源。互斥锁保证了每一次只有一个线程进入写入操作。从而保证了多线程下数据的安全性。

死锁

我献给大家介绍一些死锁:在多个线程共享资源的时候,如果两个线程分别占有一部分资源,并且同时等待对方的资 源,就会造成死锁现象。
我给大家举一个比较搞笑的例子
两情侣之间吵得不可开交你不让我我不让你,那么要是双方都不开口,那么双方是不是就是一直等待着
那我带大家来看一下死锁是怎样的结构:

from threading import Lock
from threading import Thread
lock1=Lock()
lock2=Lock()

def work1(num):
    lock1.acquire()#lock1上锁
    print("in work1")
    lock2.acquire()#lock2上锁
    print("work1---")
    lock2.release()#lock2解锁
    lock1.release()#lock1解锁

def work2(num):
    lock2.acquire()#lock2加锁
    print("in work")
    lock2.acquire()#lock2加锁
    print("work---")
    lock1.release()#lock1解锁
    lock1.release()#lock2解锁

if __name__ == '__main__':
    t1=Thread(target=work1,args=(1000000,))
    t2=Thread(target=work2,args=(1000000,))
    t1.start()
    t2.start()

行了,概念代码也都介绍了,小的就告退啦,祝大家每天开开心心,嘻嘻嘻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章