为什么在python中有全局解释器锁,但Java,C++中却没有

 我来答
就烦条0o
2018-07-29 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46493
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
Python语言并没有GIL。
CPython(以及试图与CPython完全兼容的)实现中有GIL。PyPy的主线中也有GIL。
Jython、IronPython都没有GIL。

Java语言并没有GIL。JVM规范也没有GIL。
目前JVM最主要的实现HotSpot VM中没有使用GIL,而是在VM内使用了一系列细粒度锁来实现VM内各种功能分别的同步需求。但其实HotSpot VM源自一个名为Strongtalk的Smalltalk VM,在Stongtalk VM以及最早期的HotSpot VM中是有GIL的,通过多年的努力研发才把它替换为细粒度锁。

C++语言没有GIL。C++的语言功能中也没有什么需要用一把全局大锁来总控的功能,所以实现中也没有C++ runtime library用“GIL”的(虽然有通过解释器实现的C++,所以这个“I”在这些实现里也算是成立把,但没有GIL)。
stgogo123
2017-09-04 · TA获得超过179个赞
知道小有建树答主
回答量:88
采纳率:100%
帮助的人:82.4万
展开全部
历史原因。c++在c++11之前都是一点都没有线程概念的,全靠程序员自己实现线程管理和线程同步。而python诞生的时候还没有多核处理器,所以为了简化开发实现了GIL,后来很多库都假设python有GIL,想改也改不了了。Java开始和C++很像,后来加入了多线程的支持,没有走python这条路。类似的还有javascript(nodejs),设计的就是单线程,通过多进程而不是多线程来挖掘多核处理器的潜力。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式