python线程安全有哪些情况
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍python线程安全有哪些情况,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、可见性问题,CPU缓存引起的可见性问题,使线程一对共享变量A的操作无法立即被线程
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
恩泽互联网科技有限公司
光遇合服后有几个服务器
大学专业网络安全学啥
网络安全教学第三课
数据库越老越好吗
桂电计算机网络安全技术考试
日程安排系统数据库表
网站服务器托管及维护服务合同
对峙2为什么总是连接不到服务器
给政府机关讲网络安全开场白
新闻如何保存数据库
软件开发微信背景图片
互联网科技焦点
服务器运维和软件运维区别
服务器数字证书无效
杭州mes软件开发
网络技术员年终总结
乡镇网络安全自查自纠报告
三维家软件开发做的怎么样
数据库信息三个世界
东营打车软件开发
激活服务器暂时不可用
连接数据库代码
为什么商用服务器那么贵
网络安全操作六禁令心得
计算机软件开发培训怎么样
贵州企业软件开发外包
数据库 gbk转utf8
华为服务器销售额2020
服务器电脑不显示d盘如何修复