首页 > 解决方案 > 对于 GIL,哪些操作是非原子的?

问题描述

我了解到,从 Python 3.2 开始,GIL 在切换线程之前基于 5 毫秒而不是 100 个字节码的时间工作。但是,如果操作需要锁(需要是原子的),那么它会等待超过 5 毫秒。

我想知道关于 GIL 的原子操作(例如赋值)、非原子操作(例如增量)或释放 GIL(例如读取)的操作示例。这将帮助程序员知道何时手动管理锁。

示例: FOR/WHILE 循环属于哪一类?

因此,基于上面的列表,程序员必须实现自己的锁以确保——例如——非原子操作(增量)不会在多线程程序中弄乱全局变量值,因为 GIL 只锁定原子操作。

标签: pythongil

解决方案


推荐阅读