加载中...

全局解释器锁(Global Interpreter Lock,GIL)是某些动态语言解释器中的一把全局互斥锁,同一时刻只允许一个线程执行解释器字节码。CPython 与 CRuby(称 GVL)是最著名的使用者。
CPython 用引用计数管理内存,若多线程并发修改引用计数会产生竞态。GIL 以最简单的方式保证安全:任何线程执行 Python 代码前必须持有该锁,解释器按固定间隔强制切换,I/O 与部分 C 扩展调用会主动释放锁。
GIL 使多线程程序在 CPU 密集任务上无法利用多核,只能靠 multiprocessing 多进程或 C 扩展绕开;但 I/O 密集场景中线程在等待时释放锁,并发仍然有效。GIL 也让单线程执行与 C 扩展开发大为简化。
移除 GIL 的尝试持续了二十余年;PEP 703 被接受后,CPython 自 3.13 起提供实验性的自由线程(free-threaded)构建,GIL 的终结已进入路线图。

登录 后参与讨论
暂无讨论,来发表第一条评论吧