在进程并发和线程并发中,很明显内核如何看待它们,因为它们直接映射到内核管理的实际事物。说到goroutines和Ruby (它们是类似的东西,对吗?)我不知道这些是如何管理的。它们是由相应的语言实现/虚拟机(我知道Go没有VM)管理的,还是映射到内核更擅长处理的东西上?
发布于 2013-09-22 08:34:21
这取决于执行情况。YARV实现了光纤本身,JRuby将其实现为Java,除了在具有专有的试验性Coroutine扩展(它不是JVM规范的一部分)的JVM上,它将它们实现为JVMs。
这和线一样,真的。MRI实现线程本身,YARV实现它们作为POSIX/Windows,JRuby实现它们作为JVM线程,IronRuby实现它们作为CLI。Rubinius最初自己实现了它们,后来又改用POSIX/Windows线程来实现它们。
BEAM Erlang实现了进程本身。Erjang将它们实现为Kilim。
换句话说: Ruby等在内核中是什么样子,取决于特定实现的作者希望它们在内核中是什么样子。
https://softwareengineering.stackexchange.com/questions/212189
复制相似问题