python线程安全有哪些情况
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章主要介绍python线程安全有哪些情况,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、可见性问题,CPU缓存引起的可见性问题,使线程一对共享变量A的操作无法立即被线程
千家信息网最后更新 2024年11月17日python线程安全有哪些情况
这篇文章主要介绍python线程安全有哪些情况,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1、可见性问题,CPU缓存引起的可见性问题,使线程一对共享变量A的操作无法立即被线程二看到,导致线程二获得旧值。
2、原子问题。
例如,self._balance=self._balance-draw_amount这个语句不是原子CPU执行命令。这个语句的执行有三个CPU命令。
实例
import threadingclass Account: # 定义构造函数 def __init__(self, account_no, balance): """ :param account_no: 账户 :param balance: 余额 """ self.account_no = account_no self._balance = balance def draw(self, draw_amount): """ :param draw_amount: 需要取的钱 :return: """ if self._balance > draw_amount: print(threading.current_thread().getName() + '从' + self.account_no + " 取钱成功,账户取出金额是:" + str( draw_amount) + "\n") self._balance = self._balance - draw_amount print('账户余额是', self._balance) else: print(threading.current_thread().getName() + '从' + self.account_no + " 取钱失败\n") # 两个线程并发取钱account = Account('账户一', 2000)threading.Thread(target=account.draw, name='线程一', args=(800,)).start()threading.Thread(target=account.draw, name='线程二', args=(800,)).start()threading.Thread(target=account.draw, name='线程三', args=(800,)).start()
以上是"python线程安全有哪些情况"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
线程
账户
取钱
问题
安全
情况
余额
内容
原子
命令
篇文章
语句
成功
三个
两个
价值
兴趣
函数
变量
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发验证和确认
服务器同构和异构
网络安全技术专题论文
汽车网络技术的分类
市工商局联合网络安全应急演练
关系数据库术语
杭州钻缘网络技术有限公司
湖北医院医疗系统软件开发
纽航互联网科技官网
数据库技术揭秘
派派聊天软件开发
虚拟机dns服务器的管理
代理服务器列表最新
gtasa服务器
网络安全从我做起怎么写留言
银行项目一般用什么数据库
东城ibm服务器回收报价
高级数据库技术面试题
sql数据库导出商品信息
数据库升级维护函
题录数据库是指文摘型数据库吗
腾讯云服务器优惠
hp服务器默认管理ip6
辐射76游戏服务器
软件开发项目总体设计
原神服务器在什么地区
信息化软件开发服务保障
数据库有效性规则规定性别
十堰专业软件开发统计
哪里的软件开发好