GVL (Global VM Lock, ранее GIL) в MRI Ruby позволяет только одному потоку одновременно выполнять код Ruby — поэтому потоки не обеспечивают истинный параллелизм на CPU. Но GVL освобождается во время операций ввода-вывода, поэтому потоки действительно помогают для работы с I/O. Для параллелизма на CPU используются несколько процессов. Это отражает ситуацию с GIL в Python.
GVL: только один поток выполняет код Ruby одновременно
MRI (the standard Ruby) has a GLOBAL VM LOCK:
→ only ONE thread executes Ruby code at any instant (no CPU parallelism from threads)
→ BUT the GVL is RELEASED during blocking I/O (network, file, DB)
So: threads help for I/O-bound work, NOT for CPU-bound work.
