MRI Ruby のGVL(グローバル VM ロック、旧称 GIL)は、同時に 1 つのスレッドだけが Ruby コードを実行できるため、スレッドは真の CPU 並列性を提供しません。しかし GVL はI/O 中に解放されるため、スレッドは確かに I/O バウンドな作業に役立ちます。CPU 並列性のためには、複数のプロセスを使用します。これは Python の GIL 状況と同じです。
GVL: 一度に 1 つのスレッドが 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.
