前言
根据维基百科GIL,全局解释器锁是一种机制,解释器通过这种机制(获取全局解释器锁)来限制同一个时间点只允许一个线程执行,即使是多核环境下.这样保证了多线程编
什么是GIL
根据维基百科GIL,全局解释器锁是一种机制,解释器通过这种机制(获取全局解释器锁)来限制同一个时间点只允许一个线程执行,即使是多核环境下.这样保证了多线程编程的安全.
GIL的优点
提高单线程程序的执行速度 更易于集成c扩展模块 GIL的缺点
无法充分利用多核 多进程与多线程
多线程资源共享,意味着数据的安全性遇到挑战,而多个进程之间的数据是独立的.由于多线程的资源共享就不可避免的遇到线程安全问题.即同一时刻,必须保证只有一个线程对共享资源进行修改.加锁就是一种同步机制.
细粒度锁:程序员自己控制加锁和解锁,比如java 粗粒度锁:解释器从语言层面上维护一个全局的锁机制来保证线程安全. 比如cpython 如果想充分利用多核的资源,取而代之的使用python中的多进程模块 multiproccsing.
参考:
http://www.cnblogs.com/mindsbook/archive/2009/10/15/thread-safety-and-GIL.html http://www.dabeaz.com/python/UnderstandingGIL.pdf
看个人简介