来自Puma 的自述文件:
在 MRI 上,有一个全局 VM 锁 (GVL),可确保一次只有一个线程可以运行 Ruby 代码。但是,如果您正在执行大量阻塞 IO(例如对 Twitter 等外部 API 的 HTTP 调用),Puma 仍然通过允许并行完成 IO 等待来提高 MRI 的吞吐量。
不幸的是,它没有解释提高 MRI 吞吐量的机制。
我知道MRI 在调用系统 IO 时会释放 GIL,但这是 MIR 而不是 Puma 的改进。
我想知道 Puma 如何并行改进阻塞 IO。
任何参考将不胜感激。