1 Star 0 Fork 1

一笑而过/git2003

forked from jackfrued/git2003 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
bank.py 1.06 KB
一键复制 编辑 原始数据 按行查看 历史
jackfrued 提交于 2020-09-15 10:32 . 删除了不必要的资源文件
"""
多线程程序
被多个线程竞争的资源(对象)通常称之为临界资源,如果对临界资源没有任何保护措施,
就有可能导致数据状态的错乱,可以通过加锁的方式对临界资源进行保护
"""
import time
from threading import Thread, RLock
class Account:
"""银行账户"""
def __init__(self):
self.balance = 0
self.lock = RLock()
def deposit(self, money):
"""存钱"""
with self.lock:
new_balance = self.balance + money
time.sleep(0.01)
self.balance = new_balance
def withdraw(self, money):
"""取钱"""
if self.balance >= money:
with self.lock:
new_balance = self.balance - money
time.sleep(0.01)
self.balance = new_balance
return True
return False
account = Account()
threads = []
for _ in range(100):
t = Thread(target=account.deposit, args=(1, ))
threads.append(t)
t.start()
for t in threads:
t.join()
print(account.balance)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/l13092842533/git2003.git
git@gitee.com:l13092842533/git2003.git
l13092842533
git2003
git2003
master

搜索帮助