当前位置: 首页 > article >正文

多线程下的共享变量访问数据竞争的问题

多线程下对共享变量的写存在数据竞问题可导致数据与预期不一致。最近在研究race conditions漏洞,用以下python 代码记录一下,以此论证,如下:

from concurrent.futures import ThreadPoolExecutor
globalNum = 5
def test():
    global globalNum
    if globalNum >= 5:
        print("globalNum >= 5 now")
        globalNum -= 1

if __name__ == '__main__':
    pool = ThreadPoolExecutor(max_workers=100)
    for _ in range(100):
        pool.submit(test)

以上代码运行时,预期输出一条“globalNum >= 5 now”,但实际情况可能输出2条及多条,如图:


http://www.kler.cn/a/306882.html

相关文章:

  • ML 系列: 第 23 节 — 离散概率分布 (多项式分布)
  • ubuntu cmake CPack将第三方库进行打包
  • 【知识科普】SPA单页应用程序介绍
  • 平替 Spring 正当时!Solon v3.0.3 发布
  • mysql 更改 字段长度
  • windows 11编译安装ffmpeg(包含ffplay)
  • SSM框架学习
  • GD32E230 RTC报警中断功能使用
  • DockerDocker Compose安装(离线+在线)
  • 汽车免拆诊断案例 | 沃尔沃V40 1.9TD断续工作
  • ensp—相关ospf-3
  • SpringBoot 消息队列RabbitMQ 交换机模式 Fanout广播 Direct定向 Topic话题
  • react使用技巧
  • Spring6学习笔记4:事务
  • Spring Boot-消息队列相关问题
  • C++从入门到起飞之——继承下篇(万字详解) 全方位剖析!
  • Pr:首选项 - 媒体
  • python打通hive数据库实现CRUD
  • 力扣最热一百题——螺旋矩阵
  • 动态住宅代理网络在广告验证中的作用
  • 卡车配置一键启动无钥匙进入手机控车
  • 详细分析Uniapp中的轮播图基本知识(附Demo)
  • PHP7 json_encode() 浮点小数溢出错误
  • 优先级队列算法
  • QUIC的丢包处理
  • 2_foc闭环调试_ADC电流采样与滤波及pid数据结构