gpt4 book ai didi

programming-languages - LLVM 是否提供任何实现 "green threads"/轻量级进程的工具?

转载 作者:行者123 更新时间:2023-12-04 12:58:09 27 4
gpt4 key购买 nike

我正在考虑使用 LLVM 作为 native 代码生成器,以 Erlang 的脉络设计一种支持轻量级进程(“绿色线程”)的并发语言。轻量级进程以 M:N 方式分配给本地 OS 线程,并且线程之间的工作窃取应该是可能的(即进程应该由可以在线程之间传递的数据结构表示,如果需要)。可能同时存在大量进程,因此进程不应占用太多内存,并且它们之间的上下文切换应尽可能快。此外,在上下文切换期间或发生垃圾收集时“暂停”轻量级进程应该相当简单。我知道 Erlang 有一个 LLVM 后端,但我找不到关于它的实现的文献很少;有人可以向我描述这怎么可能吗?

最佳答案

LLVM 与实现这种类型的系统没有直接关系。有很多语言的前端具有这种结构,低于 LLVM 的 IR。

LLVM 只是一种编译器技术,用于为单个执行线程生成 native 代码。实现上下文切换、适本地设置堆栈(仙人掌堆栈或其他技术)以及其他问题主要是运行时和环境的责任。

一个异常(exception)是支持运行时调用的合成以在必要时增加堆栈,并且可能将堆栈拆分为不连续的区域。正如评论中所指出的,LLVM 对此有一些支持,尽管它没有经过很好的测试。但是,您的前端也可以控制堆栈的使用,以避免在 LLVM 中需要任何支持。

关于programming-languages - LLVM 是否提供任何实现 "green threads"/轻量级进程的工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27751722/

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