我正在Green Thread (Wikipedia)阅读这个信息丰富的页面,我想知道:其他编程系统还依赖于Erlang旁边的“绿色流程”?
修改:“绿线!= 绿色进程”
已更新:没有人直接回答这个问题,因此我接受了一个答案,为我提供了有关绿色流程的更多信息。
答案 0 :(得分:3)
关于整个“绿色线程”作为名称,请参阅comments on this post:
更严重的是,我很惊讶地看到你使用Java阵营中的一个术语,而不是像“用户空间协作线程”这样的术语。好人Peter van der Linden解释了这个词的起源:
当Java 1.0首次出现在Solaris上时,它没有使用本机Solaris库libthread.so来支持线程。相反,它使用了用Java编写的运行时线程支持,用于代号为“Green”的早期项目。该线程库被称为“绿色线程”。
我希望我们可以使用操作系统中的术语,例如用户空间vs线程的内核调度。毕竟,它是操作系统级别的区别。名称“绿色线程”仅是Java历史记录。
答案 1 :(得分:2)
据我了解,这些“绿色流程”实际上与绿色线程没有根本的区别。缺乏共享状态源于语言设计,而不是任何技术或巨大的概念差异。 Erlang简单地说:
因此,两个进程无法访问相同的内存,即使它们可能在操作系统级别上共享虚拟内存(我想这使得Erlang更容易在没有操作系统级线程的架构上实现) )。
答案 2 :(得分:1)
Java使用它们直到1.2 ..然后他们意识到有一个更轻的线程被安排两次效率不高。
答案 3 :(得分:0)
现在,还有Rust(参见rust-lang.org),它有一个用于N:M线程的模块和一个用于内核线程的模块。