Python多线程,GIL,数据安全

关于线程相关的一些概念,这篇讲的比较好 https://blog.csdn.net/weixin_40481076/article/details/101594705

GIL 只是保证同一个进程内只有一个线程在运行,但并不能这个线程的某一个需要完整操作不被中断。
大概是这个意思
假设A、B功能是对一个全局变量 m 进行+1。A在读取了m的值之后,被B拿去了GIL锁,然后B读取m的值,并+1,此时m是m+1.
然后A拿到了GIL锁,它刚刚已经读到了m的值,所以 B对m的+1操作 A是读不到的。A又对m进行+1操作,此时m是m+1
A B 都对m进行了+1 操作,按道理m应该是 m+2,但是m最终是 m+1

为什么是 先读取,再+1 再赋值哪
知乎的回答 https://www.zhihu.com/question/23030421/answer/36220770

原文地址:https://www.cnblogs.com/dg-blog/p/15016059.html