Programming languages LLVM是否提供任何设施来实施;“绿色线程”/轻量级流程?

Programming languages LLVM是否提供任何设施来实施;“绿色线程”/轻量级流程?,programming-languages,llvm,green-threads,lightweight-processes,Programming Languages,Llvm,Green Threads,Lightweight Processes,我正在研究设计一种支持轻量级进程(“绿色线程”)的并发语言,它采用Erlang的方式,使用LLVM作为本机代码生成器。轻量级进程以M:N方式分配给本机OS线程,线程之间的工作窃取应该是可能的(即,进程应该由一个数据结构表示,如果需要,可以在线程之间传递)。大量的进程可能同时存在,因此进程不应该占用太多内存,它们之间的上下文切换应该尽可能快。此外,在上下文切换期间或垃圾收集发生时,“暂停”轻量级进程应该相当简单。我知道Erlang有一个LLVM后端,但我能找到的关于其实现的文献很少;有人能告诉我这

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

我对LLVM或Erlang没有具体的经验

但我用一种叫做PARLANSE的编程语言实现了这样一个系统。 是的,让上下文切换变得便宜是很困难的

有关此问题的更多详细信息,请回答:

我对LLVM所知甚少,这可能很难。什么 您需要生成is上下文切换代码。我不确定LLVM是否支持 那是直接的。这当然不是一件容易做到的事情,当生成 纯C代码,因为语言原语不允许您访问机器/线程 说得很好

他在这里的另一面是叮当声,在试图支持C++14的功能,必须肯定
跌跌撞撞地进入“C++本机”线程。必须有上下文切换支持才能实现这一点,因此可能有人已经或已经解决了这个问题。

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

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


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

您可能需要拆分堆栈。GCC有它们,所以LLVM可能也有