1.1死锁发生的必要条件
1.2.1死锁例子 简单模拟银行转账
"""
银行转账
"""
from time import sleep
from threading import Thread,Lock
# 账户类
class Account:
def __init__(self, _id, balance, lock):
self.id = _id # 用户
self.balance = balance # 存款
self.lock = lock # 锁
# 取钱
def withdraw(self, amount):
self.balance -= -amount
# 存钱
def deposit(self, amount):
self.balance += amount
# 查看余额
def get_balance(self):
return self.balance
# 产生两个账户
Tom = Account('Tom', 5000, Lock())
Alex = Account('Alex', 8000, Lock())
# 转账过程
def transfer(from_, to, amount):
if from_.lock.acquire(): # 锁住自己的账户
from_.withdraw(amount)
sleep(0.5)
if to.lock.acquire(): #