gpt4 book ai didi

multithreading - 为什么 GHC 线程重量极轻?

转载 作者:行者123 更新时间:2023-12-03 12:48:19 26 4
gpt4 key购买 nike

阅读 Simon Marlow 关于 haskell 并行编程 的教程。

a thread typically costs less than a hundred bytes plus the space for the stack, so the runtime supports literally millions of them, limited only by the available memory, unlike OS threads ....

我对线程成本有不同的印象。用于单个线程的内核结构超过 4MB(线程堆栈)。 32 位进程空间可以产生不超过 1000 个线程,而不是 literally millions

我认为他指的是 GHC 控制的部分,但如果操作系统已经为线程维护堆栈,为什么 GHC 需要再次这样做?

最佳答案

Haskell 在操作系统线程之外/之上使用“绿色线程”(由 Haskell 运行时管理)(您仍然需要这些线程来使用多个 CPU 内核)。

if OS has already maintained stack for thread why would GHC need to do that again?

正是因为您提到的原因:操作系统线程很重。绿色线程可以非常轻量级。

如果您熟悉 Java,这大致相当于使用 Thread 与将任务提交给由线程池支持的 ExecutorService

关于multithreading - 为什么 GHC 线程重量极轻?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38683029/

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