GVL (Global VM Lock, dawniej GIL) w MRI Ruby pozwala tylko jednemu wątkowi wykonywać kod Ruby na raz — zatem wątki nie zapewniają rzeczywistego paralelizmu CPU. Jednak GVL jest zwalniana podczas I/O, więc wątki rzeczywiście pomagają w pracy związanej z I/O. Dla paralelizmu CPU używasz wielu procesów. To odzwierciedla sytuację z GIL w Pythonie.
GVL: jeden wątek uruchamia kod Ruby naraz
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.
