从Python角度理解mutex
mutex(维基百科 )
According Wikipedia, Mutex(Mutual exclusion) 互斥锁,是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。
通过将代码切片成一个一个的临界区域(critical section)达成。
临界区域,指的是一块对公共资源进行访问的代码,并非一种机制或算法。
举例理解mutex
一个多人激烈争论的会议上,人人抢着发言谁都听不清。
主持人拿来一个塑料尖叫鸡,谁拿着尖叫鸡谁说话,想说话的只能向支持人示意,发言人发言结束后把尖叫鸡给主持人,主持人再给下一个想要发言的人。
其中主持人就是操作系统;尖叫鸡就是mutex。
延伸概念
线程不安全
多个线程同时访问某一资源,对数据造成破坏,使得线程运行的结果不可预期。
数据共享与锁定/非锁定
线程同步保证多个线程安全访问竞争资源,最简单的同步机制是加入互斥锁。
某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改,知道改线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定改资源。
mutex In Python
以前有一个mutex module which has been deprecated since version 2.6。
>>> mutex = threading.Lock()>>> mutex.acquire() >>> print("mutex is now locked")>>> mutex.release() >>> print("mutex is now unlocked")
Reference
- What is a mutex?
- Python多线程编程(3): 使用互斥锁同步线程
- Python mutex example
从Python角度理解mutex相关推荐
- 视频教程-C语言-从汇编角度理解C语言的本质-C/C++
C语言-从汇编角度理解C语言的本质 擅长JavaWeb开发,游戏逆向外挂与反外挂,游戏保护对抗 孙冉 ¥49.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅 ...
- 【Column Generation思考-02】|从对偶的角度理解Cutting Stock Problem【更新版本】
[Column Generation思考-01]|从对偶的角度理解 Cutting Stock Problem简介 Cutting Stock Problem的Column generation re ...
- 投资理财——量化交易角度理解宏观概念
目录 一.背景介绍 二.思路&方案 三.过程 四.总结 五.升华 一.背景介绍 承接上一篇<投资理财--初识基金>,本人的基本情况在上一篇已经做了介绍:上一篇介绍到针对于投资理财知 ...
- Python 代码理解 polygon.py
Python 代码理解 polygon.py 1.运行和阅读代码 该代码的主要功能为通过调用不同的包,设置不同的线段数.线段长度和角度等条件,进行不同图形的绘制. 经过环境配置和代码阅读后,初步运行代 ...
- Python字典理解
本文翻译自:Python Dictionary Comprehension Is it possible to create a dictionary comprehension in Python ...
- 【C 语言】数组 ( 多维数组本质 | 步长角度 理解 多维数组本质 )
文章目录 一.从 步长角度 理解 多维数组本质 二.代码示例 一.从 步长角度 理解 多维数组本质 声明一个二维数组 ; // 声明一个多维数组int array[2][3]; 二级指针 : arra ...
- 谷歌Deep Bootstrap Framework:在线优化角度理解神经网络
The Deep Bootstrap Framework: Good Online Learners are Good Offline Generalizers(ICLR21) 一元@炼丹笔记 理解深 ...
- 从另一个角度理解分布式系统与CAP定理
从另一个角度理解分布式系统与CAP定理 参考:性能之殇(七)-- 分布式计算.超级计算机与神经网络共同的瓶颈 分布式计算的本质 分布式系统的产生,来源于源于人们日益增长的性能需求与落后的x86架构之间 ...
- 以吃货的角度理解 IaaS,PaaS,SaaS 是什么
转载自 以吃货的角度理解 IaaS,PaaS,SaaS 是什么 随着云计算时代的到来,越来越多的软件,开始采用云服务.越来越多的概念也随之而来.云服务只是一个统称,可以分成三大类. IaaS:基础设施 ...
最新文章
- 定义c/c++全局变量/常量几种方法的区别
- PHP移动文件指针ftell()、fseek()、rewind()总结
- hashmap containsvalue时间复杂度_面试宝典:数据结构HashMap
- Python3文件操作:with...open的使用代码示例
- 登录方式1:MySQL自带客户端
- eclipse开发jsf_在Eclipse上创建JSF / CDI Maven项目
- 学生用计算机怎么用视频,19.使用ZOOM作为上课视频、语音和屏幕分享工具,具体对学生的电脑和宽带有什么软件和硬件要求?...
- gradle项目启动报错_如何用IDEA创建SpringBoot Gradle多项目工程?
- C语言里面邻接表的创建
- 赤菟CH32V307 RISC-V 开发板 rt-thread 的坑 - esp8266的使用
- java 对hashmap排序_Java 对HashMap进行简便排序的三种常见方法
- Hive:用SQL对数据进行操作,导入数据、清洗脏数据、统计数据订单、优化结果输出等等
- 读研攻略(11)—十分钟学会简历撰写,两千字无废话
- u盘被写保护无法格式化
- 我是一个粉刷匠用计算机弹,《我是一个粉刷匠》,钢琴双手弹的谱子,,,急用,,,谢谢...
- 双胺基修饰MOF/GO烯复合材料|硫修饰Cu基MOF材料|磁性纳米多孔碳材料FeO@C|mof材料的复杂定制
- gt,gte,lt,lte含义
- ipad一直卡在白苹果_IOS checkm8漏洞越狱 典型应用案例之OTA升级造成白苹果修复案例...
- 虚拟串口软件:VSPD的使用
- 用C语言实现my_strncat