前言
本文将继续围绕 threading 模块讲解,基本上是纯理论偏多
对于日常开发者来讲很少会使用到本文的内容,但是对框架作者等是必备知识,同时也是高频的面试常见问题
官方文档:https://docs.python.org/zh-cn/3.6/library/threading.html
线程安全
线程安全是多线程或多进程编程中的一个概念,在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。
线程安全的问题最主要还是由线程切换导致的,比如一个房间(进程)中有10颗糖(资源),除此之外还有3个小人(1个主线程、2个子线程),当小人A吃了3颗糖后被系统强制进行休息时他认为还剩下7颗糖,而当小人B工作后又吃掉了3颗糖,那么当小人A重新上岗时会认为糖还剩下7颗,但是实际上只有4颗了。
上述例子中线程A和线程B的数据不同步,这就是线程安全问题,它可能导致非常严重的意外情况发生,我们按下面这个示例来进行说明。
下面有一个数值num初始值为0,我们开启2条线程:
-
线程1对num进行一千万次+1的操作 -
线程2对num进行一千万次-1的操作
结果可能会令人咋舌,num最后并不是我们所想象的结果0
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Python很慢?Python之父一句话亮了06/13
- ♥ 嘿嘿!我用Python一键生成《乘风破浪的姐姐》们的星座运势PPT05/10
- ♥ python需要分号吗09/10
- ♥ 嵌套字典在 python 中意味着什么?12/07
- ♥ python如何表示结构12/07
- ♥ 程序员如何用1年获得大厂3年实战经验?03/24
内容反馈