码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python的GIL存在的情况下,是否还有必要添加线程锁。


    GIL锁的产生:
    为了保证在单线程情况下,Python的正常执行和效率,GIL锁产生了,由于只有一把锁就不会产生死锁也不用切换。
    对于Python语言而言,只有CPython解释器(用C语言编写的Python解释库)存在GIL。
    GIL的影响(开启多线程情况下):
    在I/O密集型多线程任务中,GIL锁的影响很小(因为等待IO的过程中锁是可以共享的)
    但在CPU计算密集型任务中,单线程和多线程的运行速度几乎一模一样。
    有GIL了,是够还有必要添加线程锁?
    有必要!
    先说线程锁的作用:
    线程锁作用1:保证多个线程共享同一资源时不会出现异常。
    假设:现在有n个Python解释器,由于GIL的存在每一个Python解释器同一时刻有且只能有一个线程执行。但由于有n个解释器,同一时刻就有n个线程可以同时执行。加入这n个线程访问同一资源,就有可能出现异常。
    解决:给每一个线程都添加一个线程锁,就能保证他们不能同时访问相同的资源。线程锁的作用是确保同一个时刻只有一个线程能够获得锁,其他线程必须等待。不同于GIL锁作用于解释器级别,线程锁是作用在操作系统级别的,权限高于GIL锁。

    线程锁的作用2:可以保证线程操作的原子性。
    原子性:对于一个事件的所有操作要么一次性都做完,要么就不做,不能做一半留一半。
    GIL确实限制了同一时刻只能有一个Python字节码执行。当这种限制是解释器级别的。只是保证了同一个解析器同一时刻只有一个线程执行Python字节码,并不能保证多个线
    线程操作的原子性。
    比如:我需要烧一壶水(线程1),我需要用烧的水沏茶(线程2)我必须等线程1执行完才能执行线程2.
    假如不加线程锁会出现的情况:我拿烧到一半还没开的水去沏茶了。

  • 相关阅读:
    深度学习实战54-基于ChatGLM2大模型构建智能自助用药问答系统与药物智能管理实战的应用
    GFS分布式文件系统
    为了摸鱼,我开发了一个工具网站
    考研算法题练习2022.11.16
    基于SpringBoot的超市管理系统
    大功率光伏应用不同多电平变换器拓扑的比较研究(Simulink)
    IMX6ULL —— 字符编码方式和实现
    基于计算机视觉的身份证识别系统 计算机竞赛
    Maven 跳过测试的几种方式
    MFC工程的MFC库使用方式与运行时库不一致引起的编译问题
  • 原文地址:https://blog.csdn.net/qq_41634258/article/details/133895093
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号