python - 对于 GIL,哪些操作是非原子的?
问题描述
我了解到,从 Python 3.2 开始,GIL 在切换线程之前基于 5 毫秒而不是 100 个字节码的时间工作。但是,如果操作需要锁(需要是原子的),那么它会等待超过 5 毫秒。
我想知道关于 GIL 的原子操作(例如赋值)、非原子操作(例如增量)或释放 GIL(例如读取)的操作示例。这将帮助程序员知道何时手动管理锁。
示例: FOR/WHILE 循环属于哪一类?
因此,基于上面的列表,程序员必须实现自己的锁以确保——例如——非原子操作(增量)不会在多线程程序中弄乱全局变量值,因为 GIL 只锁定原子操作。
解决方案
推荐阅读
- python-3.x - 如何将图像分成 4 个相等的部分并对每个部分进行一些处理,然后最后合并所有处理后的图像部分?
- amazon-web-services - 无法通过公共 IP 在 EC2 上的 Docker 中访问 Tomcat
- powershell - Powershell 如果 -eq 和 -ieq 不区分大小写并且具有相同的目的,或者 -ieq 需要在特定场景中使用?
- java - 为什么在 Spring Boot Project 中直接使用 EntityManger 时出现 NullPointerException?
- angular - Angular:在Routerlink中查找兄弟组件的完整URL字符串
- mysql - 使用 PostgreSQL 和 isGenerated 时,TypeORM 迁移语法错误
- nearprotocol - 在智能合约中使用 env::log 的最佳实践是什么?
- firebase - 热重载使我的应用程序注销 Flutter Firebase
- swift - SwiftUI 颜色不会在主页上更新
- uwp - Windows 10 UWP - 在不同机器上使用 BluetoothLE SDK 示例连接到 BLE 设备时出现问题