首页 > 其他分享 >叽里咕噜

叽里咕噜

时间:2022-12-13 18:45:43浏览次数:29  
标签:解释器 Cpython cpython 回收 线程 垃圾 叽里咕噜

1 为什么cpython获得gil锁,线程才能执行

在Cpython解释器中自带的垃圾回收机制不是线程安全的。

  原因是,假若没有GIL锁的情况下,程序员在同一个进程下开了多个线程,这些多个线程在取得同样的一份代码之后,并不是自己执行这些代码,而是交给Cpython解释器去执行,由于多个线程都可以同时或者先后交代码给Cpython解释器,此时就会产生一个时间差。

  但是同时,Cpython解释器自带的垃圾回收机制会随时的出来巡逻,若某个线程不幸的碰到了,该线程中的代码在执行时,会给某些值赋值,向操作系统申请新的空间,在恰恰刚要赋值的前段时间,垃圾回收机制会认为该值的引用计数为0,就会将这个值当成垃圾回收掉,此时就造成了数据的丢失。

  这是由于多个线程与Cpython自带的垃圾回收机制线程同时运行产生的冲突。所以,我们就需要一把锁将垃圾回收线程与程序员搞出来的多个线程分隔开来,而GIL锁就是用来干这件事的。

 

2 python解释器:cpython:主流   pypy jpython

很多内置的,第三方的东西,都是基于cpython写的
-咱们用python的目的,是模块众多,都是基于cpython写的

标签:解释器,Cpython,cpython,回收,线程,垃圾,叽里咕噜
From: https://www.cnblogs.com/shangxin-bai/p/16979597.html

相关文章