我已经开始研究 Erlang 并发现 BEAM 运行时环境很吸引人。通常说在 Erlang 中,进程属于语言而不是操作系统(意思是运行时,在这种情况下是 BEAM)。这些是 Erlang 出名的轻量级“绿色流程”。进一步说明(在本文的第 5 页),BEAM 使用每个 CPU 内核的一 (1) 个 OS 线程进行调度,并使用另一个 OS 线程进行 i/o。所以我想知道:实际执行 Erlang 代码所需的 CPU 周期来自哪个线程?
此外,如果我在双核机器上运行,我希望——根据我目前所读的内容——看到三 (3) 个线程在 BEAM 进程下运行:两个调度程序(每个内核一个)和一个 i/o 线程。但我看到 10。有时是 11。有时它从 13 开始,就像高质量的放大器一样,到 11。
我很困惑。任何见解将不胜感激。