gpt4 book ai didi

linux - VM 的那个线程是否需要每个线程的多个实例?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:40 25 4
gpt4 key购买 nike

我刚刚开始学习 Python,听说过 GIL 以及它如何阻止“真正的”多线程(我的意思是,允许多个线程同时在不同的内核上运行)。

现在,假设如果要删除 GIL,每个线程(现在在不同的核心上运行)是否需要一个单独的 VM 实例才能执行? JVM是否有同样的问题?

如果是这样,与单独的进程相比,在 VM 上解释/执行的程序中使用线程是否有任何好处(除了使用 POSIX 线程与进程的性能提升 - 尽管我相信在 Linux 中区别不在于伟大的)?因为必须为每个线程拥有一个单独的 VM 实例似乎开销很大。

谢谢。

最佳答案

不,不需要单独的 VM“实例”。为什么会有? GIL 的问题在于它是一个需要在所有线程之间共享的数据结构,并且在没有锁定的情况下不能被多个线程安全地访问。基本上解决方案是尽量避免这种事情:)

许多 VM 会有一些每线程或每核心数据结构(例如,一些 JVM 可以从线程局部堆分配内存,使分配非常快)但这与每个线程或核心一个完整的独立 VM 实例。

关于linux - VM 的那个线程是否需要每个线程的多个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6414715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com